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 :

Pas de children après un append


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    r&d
    Inscrit en
    Avril 2011
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : r&d

    Informations forums :
    Inscription : Avril 2011
    Messages : 13
    Par défaut Pas de children après un append
    Bonjour,

    Voici un bout de code jquery tout bête :

    Code js : 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
    (function ($) {
      $.fn.myfunc = function (params) {
        ...
        var myId = 'id_' + params.id;
        var myDiv = $('<div></div>').attr("id", function () { return '' + myId; });
        $(this).append(myDiv); 
        $('div[id^="id_"]').css('display', 'block');
      });
    });
     
     
    $(document).ready(function () {
      $('#body').myfunc({
        id: 'coucou'
      });
    });

    J'imagine que ce code devrait créer une <div> dans mon <body>

    Quand je fais une alert(myDiv.attr('id')); c'est ok j'ai bien "id_coucou"
    Mais quand je fais alert($(this).children().length); j'obtiens 0, $this n'a pas de children ?!?

    Et autre question : comment bien utiliser le selector pour y appliquer un css ? Je voudrais qqchose comme ça
    $('div[id="id_coucou"]').css('display', 'block');
    Mais avec id_coucou plus générique, du genre "id_"+params.id

  2. #2
    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
    Poses-toi d'abord la question de savoir à quoi correspons $(this) dans ton code
    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

  3. #3
    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
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    <script type="text/javascript">
     
      $.fn.myfunc = function (params) {
        	var myId = 'id_' + params.id;
        	var myDiv = $('<div></div>').attr("id", myId);
        	$(this).append(myDiv); 
        	$('div[id^="id_"]').css({'display':'block'});
      		};
     
     $(function () {
      $('body').myfunc({
        id: 'coucou'
      });
    });
    </script>
    </head>
    <body>
    <input type="button" onclick="alert($('body').children('div').length)" value="go" />
    </body>
    </html>
    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 !

  4. #4
    Membre averti
    Femme Profil pro
    r&d
    Inscrit en
    Avril 2011
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : r&d

    Informations forums :
    Inscription : Avril 2011
    Messages : 13
    Par défaut
    Vu que dans $(document).ready(function () {...}) j'appelle myfunc avec $('#body'), je dirais donc que $(this) c'est $('#body'), non ?

    En fait je développe ce pluggin pour pouvoir à terme faire plusieurs appels, pour l'instant donc j'appelle avec $('#body') mais après validation de cette méthode, je compte pouvoir écrire :
    $('#myDiv1').myfunc('coucou');
    $('#myDiv2').myfunc('hello');

    Donc j'imagine alors que $(this) sera respectivement $('#myDiv1') puis $('#myDiv2').

  5. #5
    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
    Citation Envoyé par quasinewbie
    j'appelle myfunc avec $('#body'), je dirais donc que $(this) c'est $('#body'), non ?
    Oui, et la question subsidiaire est : as-tu dans ta page un élément dont l'id est body ?
    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

  6. #6
    Membre averti
    Femme Profil pro
    r&d
    Inscrit en
    Avril 2011
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : r&d

    Informations forums :
    Inscription : Avril 2011
    Messages : 13
    Par défaut
    $('body')
    Merci pour ce magistral cours

  7. #7
    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
    Bonjour

    À toutes fins utiles :

    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
    19
    20
    <script>
    	(function($){
    		$.fn.myfunc = function(params){
    			return this.each(function(i, item){
    				$("<div/>", {
    					"id": "id_" + params.id,
    					"css": {
    						"display": "block"
    					}
    				}).appendTo(item);
    			});
    		};
    	})(jQuery);
     
    	$(function(){
    		$("body").myfunc({
    			"id": "coucou"
    		});
    	});
    </script>
    Je vous recommande la lecture de la FAQ jQuery.

    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.)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Pas d'espace après \dots
    Par LaTexDure dans le forum Mise en forme
    Réponses: 2
    Dernier message: 10/12/2007, 13h39
  2. Réponses: 4
    Dernier message: 20/09/2007, 14h08
  3. Réponses: 3
    Dernier message: 10/05/2007, 07h43
  4. [CKEditor] browser server files => ne se met pas a jour apres un CreateFolder
    Par otb82 dans le forum Bibliothèques & Frameworks
    Réponses: 1
    Dernier message: 20/02/2007, 11h52
  5. Réponses: 2
    Dernier message: 12/01/2007, 01h27

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