2010-11-26 6 views

答えて

10

ほとんどのブラウザでは、XPath式で要素を選択するためのdocument.evaluate()がサポートされています.jQueryは必要ありません。サポートされていない唯一の主要なブラウザはInternet Explorerです。しかし、Dimitri GlazkovはIEに欠けている機能を実装するcreated a libraryを持っています。

(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

より良い解決策がここに示されてhttp://stackoverflow.com/questions/2068272/getting-a-jquery-selector:

var result = document.evaluate("//a[@href='#']", document, null, 0, null), item; while (item = result.iterateNext()) { // item will be an <a> element with href="#" here } 

あなたは簡単すぎて、この機能をラップするプラグインを作成することができます-for-an-elementここで、ネイティブCSSセレクターとして文字列を使うことができます – Michael

+1

@Michael:その質問と解決策はこの問題とは無関係です。これは、XPath構文を使用して要素を選択する方法を尋ねます。その要素は、既に選択された要素に対してCSSセレクタを作成する方法を尋ねます。両方とも異なる問題に近づいているので、いずれか一方が他方より優れていると言うことはできません。 –

+1

あなたは正しいと思います。アンディ!説明してくれてありがとう。 – Michael

関連する問題