2013-01-22 7 views
3

J'ai une liste html, et je tente de trouver un élément span dans la liste avec un texte égal à « chat »jQuery find() avec: contient le filtre ne fonctionne pas

<div id= "target_language_tag_list"> 
<ul class="target-tag-list"> 
    <li><span id="tag_18" class="myTag">éléphant</span></li> 
    <li><span id="tag_31" class="myTag">box</span></li> 
    <li><span id="tag_29" class="myTag">cat</span></li> 
    <li><span id="tag_30" class="myTag">pig</span></li> 
    <li><span id="tag_32" class="myTag">flower</span></li> 
</ul> 

J'ai écrit le script suivant js.coffee, mais je reçois un « non défini » réponse

translatedTag = $('input#tag_translated_name').val() # cat 
targetList = $('#target-tag-list') 
found = targetList.find("span:contains(" + translatedTagName + ")") 
alert 'found: ' + found.attr('id') # should be tag_29 but is undefined 

J'essaie aussi un test direct, même erreur non définie

found = $("#tags.tab-pane.active #target-tag-list li span:contains('cat')") 
alert 'found: ' + found.attr('id') # should be tag_29 but is undefined 

Je suppose que quelque chose ne va pas dans mon utilisation du filtre contient, mais qu'est-ce qui ne va pas?

Répondre

4

Votre UL n'a pas d'ID mais une classe.

Par conséquent, aucun élément ne correspond à #target-tag-list. Essayez plutôt de rechercher un cours avec .target-tag-list.

+0

Merci .. Je pensais que je cherchais dans la div .... – erwin

1

Essayez celui-ci: http://jsfiddle.net/fpS4u/

translatedTag = $('input#tag_translated_name').val(); 
targetList = $('.target-tag-list'); 
found = targetList.find("span:contains("+translatedTag+")"); 
alert('found: ' + found.attr('id'));