请耐心等待。我正在尽力解释我需要什么,但我可能需要对我的OP进行一些更新。
我想获得层次结构中所选元素的位置。例如, 如果我在整个html文档中总共有4个超链接,并且我将鼠标悬停在第三个链接上,我想要“html> body> a:eq(2)” - 2表示第3个超链接元素。
不,index()
没有做到这一点。
我尝试this code进行了一些调整,得到了这个:“html> body> a”,但找不到返回位置的函数。
如何在相似元素的层次结构中获取所选元素的位置? (我甚至不知道这是否是正确的术语。)如果x == y有点事,我是否需要遍历DOM并执行手动匹配
<a href=#">link1</a>
<a href=#">link2</a>
<a href=#">link3</a>
<a href=#">link4</a>
我会将此代码用于各种HTML元素,而不仅仅是超链接。
答案 0 :(得分:1)
如果你有一个给定的元素,并想知道它在文档中的第n个链接,你可以这样做:
function whichLink(el) {
return $("a").index(el);
}
这种形式的.index(el)
返回jQuery对象中的哪个项与传入的元素匹配。它搜索jQuery对象以查找匹配元素。由于jQuery对象按文档顺序对元素进行排序,因此这将为您提供给定链接的文档中的位置。
如果您尝试做一些不同的事情,请进一步澄清您的问题。
答案 1 :(得分: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
});
});
答案 2 :(得分:0)
由于你想在悬停时采取行动,我建议采用略有不同的方法。事件我将在文档首次加载时设置索引,而不是找到所有元素来获取每个悬停的索引(可能经常发生),因此您可以在事件触发时轻松检索它。
类似的东西:
$('a').each(function(i, el){
$(this).data('index', i);
$(this).hover(function(){
var hoveredIndex = $(this).data('index');
// Do you action with the index
});
});
如果您没有太多标记或悬停不经常发生,这可能是矫枉过正。此外,如果元素周围有容器,则可以修改选择器/事件。