IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

jQuery Discussion :

Div dynamique hérite pas du JS


Sujet :

jQuery

  1. #1
    Invité
    Invité(e)
    Par défaut Div dynamique hérite pas du JS
    Bonjour,

    Sur une page web je crée dynamiquement un ensemble de div quand on clic sur un bouton.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    function ajouter(nom_objet){
    	valueDiv = $('#detail').val();
    	valueDiv = valueDiv + '<div class="draggable"><img class="img_objet" src="img/arbre_1.png" /></div>';
    	$('#detail').html(valueDiv);
    }
    Le problème c'est qu'il n'hérite pas de ma classe "draggable"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $(function() {
    	$(".draggable" ).draggable({ 
    		cursor: "crosshair"
    	});		
    });
    Comment "lier" ce code js à quelque chose crée en dehors du chargement de la page ?

    Merci
    Dernière modification par Bovino ; 19/02/2013 à 11h29. Motif: Réduction de l'indentation : merci pour ceux qui lisent...

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    un classique pourtant

    voir on() ou delegate()

    ex: http://jsfiddle.net/4aGwY/2/
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  3. #3
    Invité
    Invité(e)
    Par défaut
    Merci, j'ai vu avec le "On" mais j'ai pas réussi a le mettre en place...

    Avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $("#terrain_detail").on("click", "img", function(event){
      alert('on');
    });
    j'ai bien le message "on" par contre c'est pour affecter ma fonction draggable..

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $(function() {
    	$(".draggable").draggable({ 
    		cursor: "crosshair"
    	});		
    });
    J'ai essayé en indiquant le nom de la fonction ou autre .. sans succès ..

    Merci
    Dernière modification par Bovino ; 19/02/2013 à 16h03. Motif: Réduction de l'indentation : merci pour ceux qui lisent...

  4. #4
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $("#terrain_detail").on("mouseenter", ".draggable", function(){
      $(this).draggable();
    });
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  5. #5
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    sinon ajoute le draggable au moment de la création


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    function ajouter(nom_objet){
    $('#detail').html($('#detail').val())
                   .append( $('<div/>').addClass('draggable').draggable().append('<img/>').attr({"class":"img_objet","src":"img/arbre_1.png"}) )
     
    }
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  6. #6
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Billets dans le blog
    125
    Par défaut
    Bonsoir

    Pour les widgets UI, je crois qu'il n'y a qu'une seule solution, détruire (destroy) et reconstruire.

    Le cas a déjà été abordé plusieurs fois sur le forum, par exemple : http://www.developpez.net/forums/d10...-deja-chargee/

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

  7. #7
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par SpaceFrog Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $("#terrain_detail").on("mouseenter", ".draggable", function(){
      $(this).draggable();
    });
    Bonjour,
    Merci cela fonctionne parfaitement

    Par contre mon code ajouté dynamiquement est comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <div id="id-draggable" class="div-draggable draggable unselectable">
    	<img class="img-objet" src="img/arbre_1.png" />
    	<div class="resize"></div>
    </div>
    Ton code marche pour le draggable par contre les evenements que j'ai sur $('.resize').mousedown, .. ne fonctionne plus aussi.

    Et ce code ne change rien alors que ca marche pour le draggable..
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $("#terrain_detail").on("mouseenter", ".resize", function(){
      $(this).addClass('resize');
    });
    Merci
    Dernière modification par FirePrawn ; 21/02/2013 à 11h43. Motif: Mise en forme

  8. #8
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    mousedown != mouseenter ...

    je triche en appliquant le draggable sur le mousenter ...

    applique egalement le mousedown sur le mousenter ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  9. #9
    Invité
    Invité(e)
    Par défaut
    Oui dans mon copié coller pour le poste j'ai oublié de modifier, mais j'ai bien ce code qui ne marche pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $("#terrain_detail").on("mousedown", ".resize", function(){
      $(this).addClass('resize');
    });
    ou encode..

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $("#div_canvas").on("mouseenter", ".resize", function(){
      $(this).mousedown();
    });
    et pourtant rien ne change :'(

  10. #10
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    il est ou ce div? dasn quoi ? ajouté quand et comment ?
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  11. #11
    Invité
    Invité(e)
    Par défaut
    Les div que j'ajoute son contenu dans un seul div (id="div_canvas").
    Quand je clic sur un bouton j'ai dans le onClick="ajouter_image('test')".

    Voici le code de la fonction qui ajoute
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    function ajouter_image(nom_image){
     nbrImage = nbrImage + 1;
     
     $('#div_canvas').append('<div id="id-draggable-' + nbrImage + '" class="div-draggable draggable unselectable"><img class="img-objet" src="img/' + nom_image + '.png" /><div class="resize"></div></div>');
    	}
    Et du coup sur le div ajouté j'ai ces 3 fonctions qui ne marche plus.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    $('.draggable').mousedown(function() {
    	$(this).addClass('img-draggable-contour');
    });
     
    $('.draggable').mouseup(function() {
    	$(this).removeClass('img-draggable-contour');
    });
     
    $('.resize').mousedown(function(e) {	
    	idParent = $(this).parents("div")[0].id;
     
    	$('#' + idParent).draggable('disable');
     
    	xDepart = e.pageX - $('#div_canvas').offsetLeft;
    	yDepart = e.pageY - $('#div_canvas').offsetTop;
     
    	bResize = true;
    });

  12. #12
    Invité
    Invité(e)
    Par défaut
    Ce code ne devrait il pas fonctionner ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $("#div_canvas").on("mousedown", ".resize", $('.resize').mousedown()));

  13. #13
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $("#div_canvas").on("mousedown", ".resize", function(){$('.resize').trigger("mousedown")});
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  14. #14
    Invité
    Invité(e)
    Par défaut
    Quand je test Chrome est littéralement HS avec page bleu et "une erreur s'est produite.. "

    Voici mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $("#div_canvas").on("mousedown", ".draggable", function(){$('.draggable').trigger("mousedown")});
    $("#div_canvas").on("mouseup", ".draggable", function(){$('.draggable').trigger("mouseup")});
    $("#div_canvas").on("mousedown", ".resize", function(){$('.resize').trigger("mousedown")});
    Dernière modification par Bovino ; 21/02/2013 à 17h34. Motif: Réduction de l'indentation : merci pour ceux qui lisent...

  15. #15
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $("#div_canvas").on("mousedown", ".draggable", function(){$('.draggable').trigger("mousedown")});
    Quand tu fais ça, la ligne $('.draggable').trigger("mousedown") fait que tu simules un mousedown sur tous les éléments ayant la classe draggable (et idem pour les lignes suivantes), je comprends que Chrome trouve ça un peu lourd à traiter !
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  16. #16
    Invité
    Invité(e)
    Par défaut
    Arf.. du coup je vois plus trop comment résoudre mon problème.. :'(

  17. #17
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    En lisant la doc sur l'objet event.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $("#div_canvas").on("mousedown", ".draggable", function(e){$(e.target).trigger("mousedown")});
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  18. #18
    Invité
    Invité(e)
    Par défaut
    J'avais essayé mais j'ai toujours la meme erreur et cela ne marche pas

    Uncaught RangeError: Maximum call stack size exceeded

  19. #19
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    tu rentres dans une boucle infinie d'attribution de mousedown sur le mousedown ...

    plutot que de créer les evenements dynamiquement ...
    essaye d'avoir un element sur la âge avec les évenements et de le cloner avec jquery ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  20. #20
    Invité
    Invité(e)
    Par défaut
    Huuh
    C'est quand même complexe simplement pour appliquer un évènement..

Discussions similaires

  1. div dynamique ne prend pas en compte le fichier css
    Par jaaf64 dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 18/05/2013, 06h52
  2. Réponses: 1
    Dernier message: 26/02/2011, 19h26
  3. [AJAX] Div dynamique AJAX. Sous IE, les images ne s'affichent pas
    Par N3odyme dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 10/12/2006, 20h56
  4. div dynamique
    Par Invité(e) dans le forum Balisage (X)HTML et validation W3C
    Réponses: 11
    Dernier message: 21/10/2005, 22h50
  5. Ma classe fille n'hérite pas de sa classe mère
    Par Invité dans le forum Langage
    Réponses: 3
    Dernier message: 15/06/2005, 12h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo