0

所以我想做的是创建一个主复选框,它会选择所有并取消选中所有。我发现这个 jquery snipt 比我创建的效果更好。

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

我的问题是这部分到底在说什么:

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

我知道“this”是“.apply-single”,它会验证它是否被“选中”,但该部分的其余部分是什么意思......用英语?我对它的含义有自己的想法,但我更愿意听听别人知道的,而不是我猜测的。

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

4

7 回答 7

2

这称为三元运算符。一般格式是

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

如果布尔表达式计算结果为 ,则计算结果为表达式 A,如果布尔表达式计算结果为true,则计算结果为表达式falseB。

于 2011-01-10T16:41:52.807 回答
2

我知道“this”是“.apply-single”

没有。this实际上是指#checkboxSort元素。

?是JavaScript中的条件运算符。

您要询问的特定代码意味着(伪代码):

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事件触发时,将checked所有具有类的元素的状态设置为元素apply-single的新checked状态#checkboxSort


无耻的自我推销:我做了一个小小的 jQuery 插件来很好地处理这个问题。检查出来

于 2011-01-10T16:45:57.010 回答
1

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

它是一个三元运算符。类似于if语句,只是内联。

于 2011-01-10T16:42:45.707 回答
0

这是一个简写形式

if($(".apply-single").is(':checked')) {
    $(".apply-single").attr("checked", "checked");
} else {
     $(".apply-single").attr("checked", "");
}
于 2011-01-10T16:42:32.417 回答
0

这一行使用了一个像这样工作的三元运算符:

  <condition>?<consequent>:<alternative>

$( this ).is( ':checked'根据复选框是否被选中,您的条件返回 true 或 false 也是如此。如果为真,则 'checked' 成为属性,否则 '' 成为属性。

于 2011-01-10T16:42:44.937 回答
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>
于 2014-03-01T21:00:09.763 回答
0

在英语中,您要询问的代码说,如果选中此项目,则将所有具有“apply-single”CSS 类的 HTML 元素的“checked”属性设置为“checked”——如果没有,则设置它为一个空值。

但是,请确认实际结果不会导致属性为checked=""。

对于复选框,未选中状态不是用checked=""表示的,而是完全没有checked属性表示的。

于 2011-01-10T16:47:17.563 回答