2011-08-18 63 views
2

我有幾個複選框分佈在兩個div上。這兩個div都包含在一個名爲actions的div中。 在另一個div中我有一個'全選'複選框。當選中該複選框時,我試圖讓所有其他人被選中,當您取消選擇「全選」時,將取消選擇其他人。使用JQuery檢查單獨div中的多個複選框

這是HTML:

<div class="actions" id="actions" title="Actions"> 
    <div> 
     <div><input type="checkbox" name="action" class="act" value="0" /> <?php echo $lang["actions"][0]; ?></div><br /> 
     <div><input type="checkbox" name="action" class="act" value="1" /> <?php echo $lang["actions"][1]; ?></div><br /> 
     <div><input type="checkbox" name="action" class="act" value="2" /> <?php echo $lang["actions"][2]; ?></div><br /> 
     <div><input type="checkbox" name="action" class="act" value="3" /> <?php echo $lang["actions"][3]; ?></div><br /> 

    </div> 
    <div> 
     <div><input type="checkbox" name="action" class="act" value="26" /> <?php echo $lang["actions"][26]; ?></div><br /> 
     <div><input type="checkbox" name="action" class="act" value="27" /> <?php echo $lang["actions"][27]; ?></div><br /> 
     <div><input type="checkbox" name="action" class="act" value="28" /> <?php echo $lang["actions"][28]; ?></div><br /> 
     <div><input type="checkbox" name="action" class="act" value="29" /> <?php echo $lang["actions"][29]; ?></div><br /> 
     <div><input type="checkbox" name="action" class="act" value="30" /> <?php echo $lang["actions"][30]; ?></div><br /> 
     <div><input type="checkbox" name="action" class="act" value="31" /> <?php echo $lang["actions"][31]; ?></div> 
    </div> 
</div> 
<div class="parameters1"> 
    <div class="selectAll" title="Select All"><input type="checkbox" id="selectAll" name="selectall" /> Select All</div> 
</div> 

這裏是我的JQuery:

$(".selectAll").click(function() { 
     var checked_status = this.checked; 
     $('#actions').find("input").each(function() { 
      $(this).attr(":checked", checked_status); 
     }); 
}); 

如果我把警報()每個函數內部,它被正確但是看到每一個複選框, $(this).attr位似乎實際上並未改變複選框。

任何想法?

回答

2

你沒有正確設置屬性:

$(this).prop("checked", checked_status); 

與1.6版本的jQuery的開始, 「.prop()」 優於 「.attr()」 爲了這個目的,但對於布爾屬性/屬性,如「檢查」「.attr()」功能仍然有效。屬性名稱爲而不是需要前面的「:」,事實上這會使操作失敗,因爲您要更新的屬性實際上稱爲「checked」,沒有「:」。

另外你並不需要明確的「.each()」;它應該很好地工作:

$('#actions input').prop('checked', checked_status); 
相關問題