2010-11-26 24 views

Respuesta

10

La mayoría de los navegadores son compatibles con document.evaluate() para seleccionar elementos con expresiones XPath; no se requiere jQuery. El único navegador importante que carece de soporte es Internet Explorer. Dimitri Glazkov tiene created a library que implementará la funcionalidad faltante para IE, sin embargo.

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

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

Desde aquí se puede crear un plugin para envolver esta funcionalidad también:

(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

una solución mejor se muestra aquí http://stackoverflow.com/questions/2068272/getting-a-jquery-selector -for-an-element donde puedes usar la cadena como un selector css nativo – Michael

+1

@Michael: esa pregunta y solución no están relacionadas con esta. Éste pregunta cómo puede seleccionar elementos usando la sintaxis XPath, que uno pregunta cómo puede crear un selector de CSS para un elemento ya seleccionado. Realmente no se puede decir que ninguno sea mejor que el otro porque ambos abordan problemas diferentes. –

+1

Mh ¡Supongo que tienes razón, Andy! Gracias por la explicación. – Michael

Cuestiones relacionadas