1

我想使用 jquery 获取单击元素的索引 - 这应该很容易,.index()但我不希望在狭窄定义的选择器中使用索引,例如$('div').index().

我想要的是该元素在页面/DOM 中的唯一索引——就像$(everything).index()它存在时一样。

这是我的简单 jquery 点击功能:

$("div").click(function (e) {
   e.stopPropagation();
   index = $(this).index();
}); 

我已经使用了一些示例 HTML:

<div>DIV 0 - I want to show as index=0 (which I do)</div>
<div>DIV 1 - I want to show as index=1 (which I do)</div>

<span>SPAN 0 - I want to show as (span) index=0</span>

<div>DIV 2 - I want to show as index=2 (but I don't, I show as 3)
    <div>DIV 3 - I want to show as index=3 (but I don't, I show as 0)</div>
    <span>SPAN 1 - I want to show as (span) index=1</span>
    <span>SPAN 2 - I want to show as (span) index=2</span>
</div>

我已经JSfiddled和它一起玩了。

我的问题是这些:

1)我不知道如何为这些 DIVS(或任何其他元素)获取唯一索引号,因为$(this)仅指当前选择,因此一旦单击,嵌入式 DIV 将重新索引为零。

2)我需要这个适用于任何/所有 html 标签(不仅仅是 DIV)

感谢您提供的任何帮助!

4

3 回答 3

4

这可行,尽管它可能不是很有效:

$(document).on('click', '*', function (e) {
   e.stopPropagation();
   var others = document.getElementsByTagName(this.tagName);
   var index = [].indexOf.call(others, this);
});
于 2012-10-02T13:20:42.780 回答
4

采用

$(document).on('click','*',function (e) {
    e.stopPropagation();
    var tag = this.tagName;
    var index = $(tag).index(this);  // it now works

    $('#output').html(index);
});  

演示在 http://jsfiddle.net/6n5zp/1/

于 2012-10-02T13:26:25.823 回答
1

使用 Alnitak 解决方案,这将适用于任何元素。

function getElementIndex(DOMELEMENT)
{
   var elements = document.getElementsByTagName(DOMELEMENT.tagName);
   return index = [].indexOf.call(elements , DOMELEMENT);
}
于 2012-10-02T13:26:58.310 回答