2010-12-16 23 views
15

私は特定のオブジェクトのhtml domのパスを取得しようとしています。
javascriptまたはjqueryを使用しています(オブジェクトを選択/ホバーしたとき)選択した要素のhtml domのパスは何ですか?

私は事前に構造を知りません。例えば

:本部・パスのようなものでなければなりません

<html> 
    <body> 
     <div> 
      <div> 
       Not selected 
      </div> 
      <div> 
       Selected Text 
      </div> 
     </div> 
    </body> 
</html> 

"選択したテキスト":任意の助け

//HTML/BODY/DIV[0]/DIV[1] 

が理解されるであろう。

私はthis answerを見ましたが、要素のインデックスに関する表示はありません(私の例では、角括弧内の値-1はDIV[1])。

ところで、このパスには「技術的な」名前がありますか?
私はXPathという用語を見てきましたが、これがそれであるかどうかはわかりません。

人生を楽しんでください。

答えて

16

次の関数はjQueryのを使用して、何をしたいん。

+0

Hamidi - Wowありがとう! –

+0

@Julian、歓迎です:)私は、兄弟を持たない要素に '[0]'インデックスを追加しないことに気付きました。あなたの例ではそうですが、私はそれをフィーチャと見なすことができます、バグではありません:) –

+0

@Fredeeic Hamidi - それは優れた機能です;-) –

1

$("html > div")[0].find("div")[1]

XPathはもうjqueryのでは使用できません。

あなたは、XPathが必要な場合は、単にFF、やChromeの下でのFirebugを使用します。anyelemtnを持つに関して

が選択されている(オプション):

$("div:hover") 

またはチェックボックス:

$("checkbox:selected") 

のは例を見てみましょう

$("option:selected") 

はdiv要素であることホバーを取得するには:

最初のリストを取得するにはどのように今

が選択されている:DIVを取得

$("#select2 > option:selected") 

または

$('.again >select')[0].find("option:selected") 

を推移している:

('.secondDIv').hover(function(){ 
},function(){}); 

などなど

function getElementPath(element) 
{ 
    return "//" + $(element).parents().andSelf().map(function() { 
     var $this = $(this); 
     var tagName = this.nodeName; 
     if ($this.siblings(tagName).length > 0) { 
      tagName += "[" + $this.prevAll(tagName).length + "]"; 
     } 
     return tagName; 
    }).get().join("/").toUpperCase(); 
} 

をあなたはこのようにそれを使用することができます:

$(document).ready(function() { 
    $("div").click(function(event) { 
     event.stopPropagation(); 
     window.alert(getElementPath(this)); 
    }); 
}); 

あなたはそれをテストすることができhere

+0

@ user544287あなたが私の質問を理解しているかどうかはわかりません。私は、私が与えた例だけでなく、選択された/ぶら下がっている要素の道を手に入れようとしています。 –

関連する問題