Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript > Bibliothèques & Frameworks > jQuery
jQuery Forum d'entraide sur le framework jQuery. Avant de poster : Tutoriels jQuery, FAQ jQuery, Tous les tutoriels JavaScript, Toutes les FAQ JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 11/05/2011, 11h38   #1
Invité de passage
 
Femme
r&d
Inscription : 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
Points : 2
Points : 2
Par défaut Pas de children après un append

Bonjour,

Voici un bout de code jquery tout bête :

Code js :
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
quasinewbie est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/05/2011, 11h48   #2
Responsable Développement Web

 
Avatar de Bovino
 
Homme Didier Mouronval
Développeur Web
Inscription : juin 2008
Messages : 13 806
Détails du profil
Informations personnelles :
Nom : Homme Didier Mouronval
Âge : 41
Localisation : France, Gironde (Aquitaine)

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

Informations forums :
Inscription : juin 2008
Messages : 13 806
Points : 35 803
Points : 35 803
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 !
Vous possédez un blog et aimeriez diffuser vos billets sur le forum, 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
Bovino est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/05/2011, 11h53   #3
Rédacteur/Modérateur
 
Avatar de SpaceFrog
 
Homme
Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Inscription : mars 2002
Messages : 30 007
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Royaume-Uni

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

Informations forums :
Inscription : mars 2002
Messages : 30 007
Points : 45 091
Points : 45 091
Code :
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
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


réalisations :www.planet-languages.com|www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.extramiante.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr
SpaceFrog est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/05/2011, 11h57   #4
Invité de passage
 
Femme
r&d
Inscription : 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
Points : 2
Points : 2
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').
quasinewbie est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/05/2011, 12h16   #5
Responsable Développement Web

 
Avatar de Bovino
 
Homme Didier Mouronval
Développeur Web
Inscription : juin 2008
Messages : 13 806
Détails du profil
Informations personnelles :
Nom : Homme Didier Mouronval
Âge : 41
Localisation : France, Gironde (Aquitaine)

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

Informations forums :
Inscription : juin 2008
Messages : 13 806
Points : 35 803
Points : 35 803
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 !
Vous possédez un blog et aimeriez diffuser vos billets sur le forum, 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
Bovino est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/05/2011, 12h42   #6
Invité de passage
 
Femme
r&d
Inscription : 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
Points : 2
Points : 2
$('body')
Merci pour ce magistral cours
quasinewbie est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/05/2011, 10h01   #7
Rédacteur
 
Avatar de danielhagnoul
 
Homme Daniel Hagnoul
Étudiant perpétuel
Inscription : février 2009
Messages : 3 221
Détails du profil
Informations personnelles :
Nom : Homme Daniel Hagnoul
Âge : 61
Localisation : Belgique

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

Informations forums :
Inscription : février 2009
Messages : 3 221
Points : 6 767
Points : 6 767
Bonjour

À toutes fins utiles :

Code :
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.
__________________

FAQ jQuery

Mon cahier d’exercices sur jQuery & Co

Si un message vous a aidé ou vous semble pertinent, votez pour lui !
danielhagnoul est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h51.


 
 
 
 
Partenaires

Hébergement Web