2011-01-10 116 views
0

所以我想要做的是创建一个主复选框,它将选择全部并取消全选。我发现这个jquery snipt比我创建的更好。使用jquery检查全部/取消选中所有复选框

$("#checkboxSort").live('change', function() { 
    $(".apply-single").attr('checked', $(this).is(':checked') ? 'checked' : ''); 
}); 

我的问题是,究竟是什么本节说:

$(this).is(':checked') ? 'checked' : '' 

我明白,“这个”是“适用单”,如果它是“检查,这是验证“但是该部分的其余部分是什么意思......在英语中是什么意思?我对自己的意思有自己的想法,但我更倾向于听取某人的意见而不是我的猜测。

感谢任何人都可以提供帮助。

回答

2

这就是所谓的三元运算符。一般格式是

[boolean expression] ? [expression A] : [expression B] 

它的计算结果为表达的,如果布尔表达式的计算结果为true,并表达乙如果布尔表达式的计算结果为false

0

这是

if($(".apply-single").is(':checked')) { 
    $(".apply-single").attr("checked", "checked"); 
} else { 
    $(".apply-single").attr("checked", ""); 
} 
0

这条线是使用三元运算符是这样的一个简短:

<condition>?<consequent>:<alternative> 

所以$(this).is(':checked'是你的条件,返回true或false取决于如果该复选框被检查与否。如果为真,那么'检查'成为属性,否则''成为属性。

1

this实际上是#checkboxSort上下文而不是.apply-single。因此它将所有.apply-single设置为#checkboxSort的选中属性。

这是一个ternary operator。类似于if声明,只需内联。

2

我明白, “这个” 是 “适用单”

都能跟得上。 this实际上是指#checkboxSort元素。

?是JavaScript中的conditional operator

的你问手段代码(伪)的特定位:

if the element with ID "checkboxSort" is checked: 
    check all elements with class "apply-single" 
else: 
    uncheck all elements with class "apply-single" 

总之,整个代码片段做到这一点:

听为ID的元素进行更改checkboxSort
当这样的一个change事件触发时,将所有具有apply-single类别的元素的checked状态设置为#checkboxSort元素的新checked状态。


无耻的自我宣传:我做了一个小凌晨jQuery插件很好地处理这个问题。 Check it out

+0

+1使用正确的说法*条件运算符*。 – user113716 2011-01-10 16:49:36

0

在英文中,您询问的代码表示,如果此项目被选中,那么将CSS类为“apply-single”的所有HTML元素的“checked”属性设置为“checked” - if不,然后将其设置为空值。

但请确认实际结果不会导致其中checked =“”的属性。

对于复选框,未选中状态不是由checked =“”表示的,而是表示为根本没有checked属性。

0

.live()已弃用。使用.on()代替。

检查:http://jsfiddle.net/loginet/Rdc5r/

$(document).ready(function() { 

    $("#checkboxSort").on('click', function() { 
     $(".apply-single").prop("checked", $("#checkboxSort").prop("checked")); 
    }); 

    $('.apply-single').on('click', function() { 
     var total = $('input:not(#checkboxSort)').length; 
     var checked = $('input:not(#checkboxSort):checked').length;   
     if (total == checked) { 
      $('#checkboxSort').prop('checked', true); 
     } else if (total > checked || checked == 0) { 
      $('#checkboxSort').prop('checked', false); 
     } 
    });  
}); 

和HTML:

<p> 
    <input type="checkbox" id="checkboxSort" />Check/Uncheck All</p> 
<hr/> 
<p id="p"> 
    <input type="checkbox" class="apply-single" />Checkbox 1 
    <input type="checkbox" class="apply-single" />Checkbox 2 
    <input type="checkbox" class="apply-single" />Checkbox 3 
</p> 
相关问题