2010-04-20 4 views
0

Comment sélectionner les éléments dont le texte de la clé de sous-tag commence par '001'?jquery xml select

<root> 
    <item> 
     <key>001001</key> 
     <text>thanks</text> 
    </item> 
    <item> 
     <key>001002</key> 
     <text>very</text> 
    </item> 
    <item> 
     <key>002001</key> 
     <text>much</text> 
    </item> 
</root> 



$(xml).find("item>[filter string]").each(function() 
{ 
    alert(this); 
}); 
+0

Est-ce que vous contrôlez le schéma XML? Promouvoir les enfants aux attributs pourrait mieux fonctionner (''). Même juste la "clé" s'il existe beaucoup plus sous un ''. –

+0

Merci, c'est une bonne suggestion. –

Répondre

1

Vous devez .filter() dans ce cas:

$(xml).find("item").filter(function() { 
    return $(this).find("key").text().indexOf('001') === 0; 
}).each(function() { 
    alert(this); 
}); 

Ce filtre les éléments par ceux ayant un élément clé qui est le texte commence par 001. Cependant, si vous pouviez modifier le schéma, ce serait beaucoup plus rapide ... chercher un filtre dans les enfants est un peu cher si vous traitez de nombreux objets.

suggestion de commentaire Jake est une bonne si elle est une option, si un élément a des attributs au lieu d'éléments internes, vous pouvez le faire beaucoup plus simple avec le attribute starts-with selector, comme ceci:

$(xml).find("item[key^=001]").each(function() { alert(this); });