11

我正在尝试检查某个系列中的所有可见复选框是否都被选中,我想只计算那些可见的和那些可见的,并检查数字是否相同。问题是我无法让可见或选中的选择器工作。

这些是我有但没有奏效的一些想法:

if($j("input[id^='chk_camp']:visible:checked").length == $j("input[id^='chk_camp']:visible").length)

在这种情况下两边都是 0

if($j("input[id^='chk_camp']").filter(':visible').filter(':checked').length == $j("input[id^='chk_camp']").filter(':visible').length)

两边也都返回 0。

也试过

if($j("input[id^='chk_camp'][visible][checked]").length == $j("input[id^='chk_camp'][visible]").length)

这也返回 0 双方。

作为注释$j("input[id^='chk_camp']").length返回正确的值。我正在使用的浏览器也是Firefox。

我在这里做错了什么?

答案:显然我做错了在其他地方。在实际使包含复选框的 div 可见之前,我正在执行这些检查,因此所有可见性检查都返回 false。

4

3 回答 3

10

你可以这样做:

jsfiddle

jQuery:

$('input').each(function() {

    // If input is visible and checked...
    if ( $(this).is(':visible') && $(this).prop('checked') ) {

        $(this).wrap('<div />');

    }

});

HTML:

<input type="checkbox" checked="checked">
<input type="checkbox" checked="checked" style="display: none;">
<input type="checkbox">
<input type="checkbox" checked="checked" style="display: none;">
<input type="checkbox" checked="checked">
<input type="checkbox">

CSS:

div { float: left; background: green; }
div input { display: block !important; }
于 2013-05-20T08:53:40.240 回答
9

这对我来说很好。

$(".inputClass:checked:visible");
$(".inputClass:checked:visible").length;

或调整上述答案。

jsfiddle

$('input:visible:checked').each(function() {
    $(this).wrap('<div />');
});
于 2015-11-25T14:42:50.363 回答
2

这是不正确的:

if($j("input[id^='chk_camp']").filter(':visible').filter(':checked).length == $j("input[id^='chk_camp']).filter(':visible').length)
//                                                          ------^------ missing qoutes here      ----^--- also double quotes here
于 2013-05-20T08:45:41.560 回答