2010-11-26 6 views

Répondre

10

La plupart des navigateurs prennent en charge document.evaluate() pour sélectionner des éléments avec des expressions XPath - pas de jQuery requis. Le seul navigateur majeur qui manque de support est Internet Explorer. Dimitri Glazkov a created a library qui va implémenter la fonctionnalité manquante pour IE, cependant.

var result = document.evaluate("//a[@href='#']", document, null, 0, null), 
    item; 

while (item = result.iterateNext()) { 
    // item will be an <a> element with href="#" here 
} 

Vous pouvez facilement créer un plugin pour envelopper cette fonctionnalité aussi:

(function($) { 
    $.xpath = function(exp, ctxt) { 
     var item, coll = [], 
      result = document.evaluate(exp, ctxt || document, null, 5, null); 

     while (item = result.iterateNext()) 
      coll.push(item); 

     return $(coll); 
    } 
})(jQuery); 

// And call it like so: 
$.xpath("//a[@href='#']").click(function() { return false; }); 
+0

une meilleure solution est montrée ici http://stackoverflow.com/questions/2068272/getting-a-jquery-selector -pour un élément où vous pouvez simplement utiliser la chaîne en tant que sélecteur css natif – Michael

+1

@Michael: cette question et cette solution ne sont pas liées à celle-ci. Celui-ci vous demande comment vous pouvez sélectionner des éléments en utilisant la syntaxe XPath, que l'on vous demande comment vous pouvez créer un sélecteur CSS pour un élément déjà sélectionné. Vous ne pouvez pas vraiment dire que l'un ou l'autre est meilleur que l'autre parce qu'ils abordent tous deux des problèmes différents. –

+1

Mh Je suppose que tu as raison Andy! Merci d'expliquer. – Michael

Questions connexes