2012-05-23 6 views
0

Je crée un tas d'éléments li dynamiquementfind() ne fonctionne pas

$.each(data.attributes.listingImages, function (i, obj){ 
if(i == 1){ 
    $('#js-carousel-menu').append('<li media class="active"><a media-frame><img class="js-carousel-item" src=" '+obj.thumbnail+ ' " /></a></li>'); 
}else{ 
    $('#js-carousel-menu').append('<li media><a media-frame><img class="js-carousel-item" src=" '+obj.thumbnail+ ' " /></a></li>'); 
} 

puis lorsque je tente la recherche de la 'active' li son ne pas le trouver

$gallery = $(this.el).find('#js-carousel-menu'); 
var _this = $gallery.find('li.active'); 

si i tracer $gallery il me donne:

<ul> 
<li media>...</li> 
<li media class="active">...</li> 
<li media>...</li> 
... 
<li media>...</li> 
</ul> 

suis-je manque somethi ng? merci

+0

Faire .find() avec un identifiant en tant que sélecteur est une sottise. Vous devriez simplement utiliser $ ('# js-carousel-menu'). Find ('li.active') car vous ne pouvez légalement avoir qu'un identifiant unique sur une page. De plus, à quel point exécutez-vous le code? La classe .active est-elle ajoutée avant ou après l'exécution de .find ('li.active') – Adam

+0

L'utilisation de l'attribut media sans valeur est-elle valide? –

+0

@Adam ive a essayé ça, et je n'ai toujours rien ... je lance une fonction "buildGallery" qui construit les éléments li, puis juste après j'appelle la find – user616860

Répondre

1

Depuis #js-carousel-menu est une carte d'identité, vous ne devriez pas besoin de le trouver, il vous suffit de le sélectionner directement. Vérifiez que le sélecteur a bien fonctionné.

alert($(this.el).find('#js-carousel-menu').length) 
+0

est de retour "1" – user616860

0

Parce qu'un ID doit être unique, $(this.el).find('#js-carousel-menu'); est inutile (et potentiellement la raison de votre problème): il ne peut y avoir qu'un #js-carousel-menu.

Alors, essayez avec:

var _this = $('#js-carousel-menu').find('li.active'); 
+0

console.log (_this) ----> [ ] – user616860

0

Pourquoi utilisez-vous pas directement comme

$ ('#-menu js-carrousel> li.active');

0

Vous Adling La classe active de l'élément de deuxième li (indice 1). Donc je suppose que vous ajoutez seulement un li qui est comme vous n'avez pas li.

Questions connexes