获取事件目标的父元素的索引

时间:2015-06-13 06:14:08

标签: javascript jquery html css

提供此代码:

$("#myList").on("click", "span", function (event) {
    alert($(this).index());
});

和HTML:

<ul id="myList">
    <li>item 0 <span>span 0</span></li>
    <li>item 1 <span>span 1</span></li>
    <li>item 2 <span>span 2</span></li>
    <li>item 3 <span>span 3</span></li>
</ul>

如果您点击任何<span>元素,&#34; 0&#34;将始终收到提醒。我认为这是因为每个<span>中只有一个<li>,因此它的索引始终为0.

我想要它做的是返回<span>父级的索引 - 在这种情况下,它将是<li>中父级<ul id="myList">的索引}。 例如,点击<span>span 2</span>会提醒&#34; 2&#34;。

JSFiddle

6 个答案:

答案 0 :(得分:6)

使用$(this).parent().index()$(this).closest('li').index()

后者会提醒li的索引,即使你决定在你的跨度中放入一个新元素并将事件绑定到那个。

答案 1 :(得分:1)

做到这一点:

alert($(this).parent().index());

答案 2 :(得分:1)

使用$.fn.parent方法:

&#13;
&#13;
$("#myList").on("click", "span", function (event) {
    alert($(this).parent().index());
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul id="myList">
    <li>item 0 <span>span 0</span></li>
    <li>item 1 <span>span 1</span></li>
    <li>item 2 <span>span 2</span></li>
</ul>
&#13;
&#13;
&#13;

答案 3 :(得分:1)

检查fiddle

JS:

alert($(this).parent().index());

答案 4 :(得分:1)

USE parent()

console.log($(this).parent().index());

查看jQuery DOCS

答案 5 :(得分:1)

这是一个可能的解决方案:https://jsfiddle.net/9naxotz1/2/

$("#myList").on("click", "span", function (event) {
    alert($(this).parent().index());
});