Jquery(“li:last-child”)无法正常工作

时间:2011-10-18 23:35:15

标签: jquery selector

最后一个" div"即使有" li"在选择器上。怎么了?我想得到" d"在案件中

http://jsfiddle.net/46u8G/2/

<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"));
})

4 个答案:

答案 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不能包含divul用于列表,并且只应包含li s(或其他ul用于子列表),但这不会影响jQuery选择...它只是无效的HTML标记。