2011-01-10 118 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> 
相關問題