最后一个" div"即使有" li"在选择器上。怎么了?我想得到" d"在案件中
<ul>
<li>a</li>
<li>b</li>
<li>c</li>
<li>d</li>
<div></div>
</ul>
$("li").click(function(){
alert($(this).is("li:last-child"));
})
答案 0 :(得分:2)
ul
的最后一个孩子是div
,而不是内容为li
的{{1}}。
删除div,它会起作用。
答案 1 :(得分:2)
预先挑出最后一个元素,然后进行比较:
var last = $('li:last');
$("li").click(function(){
var isLast = this == last[0];
alert(isLast);
});
但是你必须使用有效的标记来实现这一点(例如<div>
没有<ul>
个孩子。
答案 2 :(得分:1)
这是你的另一个例子:
$("#init").children().each(function(){$(this).click(function(){
alert($(this).is(":last-child"));
})
})
如果您只希望它在点击时对一个元素起作用,则其他答案将起作用。
答案 3 :(得分:0)
因为它正在寻找最后一个孩子,而不是选择器中的最后一个孩子。 jQuery确实支持:last
伪元素。
$("li").click(function(){
alert($(this).is("li:last"));
})
另外,ul
不能包含div
。 ul
用于列表,并且只应包含li
s(或其他ul
用于子列表),但这不会影响jQuery选择...它只是无效的HTML标记。