1

我慢してください。私は必要なものを説明するために最善を尽くしていますが、おそらくOPにいくつかの更新が必要になるでしょう。

階層内の選択した要素の位置を取得したい。たとえば、htmlドキュメント全体に合計4つのハイパーリンクがあり、3番目のリンクにカーソルを合わせると、「html> body> a:eq(2)」-2が3番目のハイパーリンク要素を意味します。

そして、いいえ、index()トリックをしません。

少し調整してこのコードを試し、「html> body> a」を取得しましたが、位置を返す関数が見つかりません。

類似の要素の階層内で選択した要素の位置を取得するにはどうすればよいですか?(それが正しい用語かどうかさえわかりません。)x == yの場合、DOMをトラバースして、手動で照合する必要がありますか?

<a href=#">link1</a> 
<a href=#">link2</a> 
<a href=#">link3</a> 
<a href=#">link4</a>

このコードは、ハイパーリンクだけでなく、あらゆる種類のHTML要素に使用します。

4

3 に答える 3

1

特定の要素があり、それがドキュメント内のn番目のリンクであるかどうかを知りたい場合は、次のように行うことができます。

function whichLink(el) {
    return $("a").index(el);
}

この形式は.index(el)、jQueryオブジェクトのどの項目が渡された要素と一致するかを返します。jQueryオブジェクトを検索して、一致する要素を見つけます。jQueryオブジェクトは要素をドキュメント順に並べ替えるため、これにより、特定のリンクのドキュメント内での位置がわかります。

別のことをしようとしている場合は、質問をさらに明確にしてください。

于 2012-06-05T19:13:51.787 に答える
0

通常、これは各ループ内で実行できます。

$('a').each(function(i) {
  // i has the index so we can do something with it
  var index = i;
  $(this).click(function() {
     $(this).attr('href', index);  // make the href = i for instance
  });
});
于 2012-06-05T19:09:58.803 に答える
0

ホバーのアクションが必要なので、少し異なるアプローチをお勧めします。すべてのホバー(非常に頻繁に発生する可能性があります)イベントでインデックスを取得するためにすべての要素を見つける代わりに、イベントが発生したときに簡単に取得できるように、ドキュメントが最初に読み込まれるときにインデックスを設定します。

何かのようなもの:

$('a').each(function(i, el){            
    $(this).data('index', i); 
    $(this).hover(function(){
        var hoveredIndex = $(this).data('index');
        // Do you action with the index
    });
});

マークアップがあまりない場合、またはホバリングが頻繁に発生しない場合、これはやり過ぎかもしれません。また、要素の周りにコンテナがある場合は、セレクター/イベントを修正できます。

于 2012-06-05T19:25:13.567 に答える