2010-11-29 5 views
1

J'utilise jQuery XPath pour trouver n'importe quel élément avec l'attribut "pathname" (une variable qui prend l'emplacement de la page de l'URL).Syntaxe pour trouver plusieurs attributs

var local_url = "*[url=" + pathname + "]"; 

Cependant, je veux maintenant savoir si cette variable existe dans l'un des deux attributs d'élément: url ou alturl. Comment est-ce que j'exprimerais ceci dans la syntaxe XPath de sorte que je n'ai pas besoin d'utiliser une instruction if/else? (Par exemple, trouver tous les attributs où url = chemin d'accès OU alturl = chemin d'accès.)

Merci!

+0

qui est en fait un CSS sélecteur. Les sélecteurs XPath ne préfixent-ils pas l'attribut avec '@'? – alex

+0

Bonne question, +1. Voir ma réponse pour une solution XPath simple. –

Répondre

3

Vous pouvez utiliser un multiple selector pour trouver des éléments avec soit mise en correspondance d'attribut, par exemple:

$("[url=" + pathname + "], [alturl=" + pathname + "]") 
1

Comment puis-je phrase ceci dans XPath syntaxe donc je ne pas utiliser un si/autre déclaration? (Par exemple, trouver tous les attributs où url = chemin OU alturl = chemin.)

Cette expression XPath:

*[@url='someString' or @alturl='someString'] 

sélectionne tous les éléments qui sont des enfants du noeud courant et ont un l'attribut url avec la valeur 'someString' ou (non exclusif) a un attribut alturl avec la valeur 'someString'.

0

Je veux maintenant trouver si cette variable existe dans l'un des deux éléments attributs

C'est exactement le comportement de comparaison de jeu de nœuds:

*[(@url|@alturl)='someString'] 
Questions connexes