提供此代码:
$("#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;。
答案 0 :(得分:6)
使用$(this).parent().index()
或$(this).closest('li').index()
。
后者会提醒li的索引,即使你决定在你的跨度中放入一个新元素并将事件绑定到那个。
答案 1 :(得分:1)
做到这一点:
alert($(this).parent().index());
答案 2 :(得分:1)
使用$.fn.parent
方法:
$("#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;
答案 3 :(得分:1)
答案 4 :(得分:1)
答案 5 :(得分:1)
这是一个可能的解决方案:https://jsfiddle.net/9naxotz1/2/
$("#myList").on("click", "span", function (event) {
alert($(this).parent().index());
});