2010-08-30 5 views
6

J'ai ul avec un certain nombre de li à l'intérieur. Tous ont un identifiant "#category" mais des classes différentes (comme ".tools", ".milk", ".apple").jQuery, trouver le nom de la classe li (à l'intérieur ul)

Utilisation de jQuery. Je fais:

$("li#category").click(function(){ some_other_thing (....)}); 

maintenant je dois mettre un « nom » de classe li - (une chaîne en effet) dans la fonction some_other_thing() au lieu de ....

Comment ça peut faire?

Répondre

3

Attention, id doit être unique! Vous suggérez que chaque élément li a le même id. Vous pouvez le remplacer par un class, par exemple .:

<ul> 
    <li class="category tools" /> 
    <li class="category milk" /> 
</ul> 

Sélectionnez ensuite avec:

$('li.category').click(function(){}); 
0

Si je comprends bien, le problème est que vous ne pouvez pas avoir plusieurs Li avec le même ID. Vous ne pouvez avoir qu'un seul identifiant par page. Ce que vous voulez probablement, c'est changer l'identifiant en classe. Donc, vous auriez quelque chose dans ce sens.
<ul>
<li class="category milK">Chocolate</li>
<li class="category tool">Big Hammer</li>
</ul>

Ensuite, vous pouvez effectuer une recherche avec $("li.category").click(function() {....});

4

ID de doivent être uniques dans un document, afin d'avoir plusieurs éléments <li> avec l'id "category" est invalide. Changez cela en une classe ou un attribut de données ou autre chose. Ou attribuez simplement une classe au parent <ul> afin de pouvoir récupérer facilement tous les li à l'intérieur.

<ul id="categories"> 
    <li class="tools"> 
    <li class="milk"> 
</ul> 

Obtenez tous les li et affectez le gestionnaire de clic.

$('#categories li').click(function() { 
    var className = $(this).attr('class'); 
    some_other_thing(className); 
}); 
1

Vos éléments li doivent avoir des ID uniques. Une fois qu'ils le font, vous pouvez sélectionner tous les enfants li du ul avec l'opérateur ">":

var ul_elem = $("#id_of_ul"); 
$("> li", ul_elem).click(...); 

OU

$("#id_of_ul > li").click(...); 

OU

$("ul.classname > li").click(...); 
Questions connexes