jQuery选择器不识别$(this)only $(element [name = foo])

时间:2013-12-16 18:49:09

标签: jquery

我刚刚用jQuery遇到过这个问题。我有一个输入无线电/复选框池,当状态改变时,应该添加或删除一个类。由于复选框是一个或多个,我需要在删除类之前检查是否所有复选框都未选中。这就是我遇到的问题,我解决了这个问题,但不知道为什么它在第一次尝试时无效。

这不起作用 - 它总是向我返回length = 0:

if ($(this).filter(':checked').length <= 0)

这有效:

if ($('input[name="'+$(this).attr('name')+'"]').filter(':checked').length <= 0)

我附上了一个小提琴,所以你可以理解我来自哪里。我的问题是,为什么我不能只在我得到其他东西(类型,名称等)时将长度引用到$(this)?

http://jsfiddle.net/9XH37/2/

PS:如果这是一个愚蠢/重复的问题,我会将其删除。

1 个答案:

答案 0 :(得分:2)

<强> JSFIDDLE DEMO

使用此

if ($(this).siblings(':checked').length <= 0)

而不是

if ($(this).filter(':checked').length <= 0)

原因:

.siblings()查找所有已更改复选框的兄弟姐妹复选框,其中.filter将匹配元素集合减少为与选择器匹配的元素。