我在这里遇到问题,请帮忙。我的要求是点击div的索引值。有2个列表,我需要调用函数doSomething();仅当用户单击第一个div集时。无论如何我能实现它。
脚本和HTML如下
$(document).ready(function() {
$(".list-wrapper li").click(function() {
var index = $(".list-wrapper div").index(this);
alert(index);
});
});
<div class="list-wrapper">
<ul>
<li>List 1</li>
<li>List 2</li>
<li>List 3</li>
</ul>
</div>
<div class="list-wrapper">
<ul>
<li>List 1</li>
<li>List 2</li>
<li>List 3</li>
</ul>
</div>
请帮忙......
答案 0 :(得分:3)
jQuery具有强大的selectors,因此通常您不需要在事件发生后检查索引。例如:
对于您网页上的第一个div:
$(".list-wrapper:first").click(doSomething);
对于每个列表中的第一个<li>
:
$(".list-wrapper li:first-child").click(doSomething);
如果您仍想查找索引,则需要搜索所点击的div
的父li
。此外,选择器.list-wrapper div
为空 - 您在div
中没有任何list-wrapper
。这将有效:
var parent = $(this).closest('div')
var index = $(".list-wrapper").index(parent);
答案 1 :(得分:1)
如果它只需要在第一个上使用:first selector
http://api.jquery.com/first-selector/
$("div.list-wrapper:first").find("li").click(function() {...
答案 2 :(得分:1)
有很多方法可以做到这一点:
$('div.list-wrapper').first().click(function() { doSomething(); });
和
$("div.list-wrapper:first").click(function() { doSomething(); });
和
$('div.list-wrapper').eq(0).click(function() { doSomething(); });
是第一个浮现在脑海中的人。 Pro-tip,包括类之前的元素类型(div.blah比.blah快)
或者只是获取索引:
var index = $('div.list-wrapper').index(this);
将'this'替换为父项的特殊性
答案 3 :(得分:0)
试试这个:
<ul><li id="foo">foo</li><li id="bar">bar</li><li id="baz">baz</li></ul>
var listItem = document.getElementById('bar');
alert('Index: ' + $('li').index(listItem));
有关详情,请参阅此处: http://api.jquery.com/index/