2011-12-14 70 views
3

我試圖選擇所有的兄弟姐妹時,首先檢查..然後,如果它未選中所有兄弟姐妹應該取消選擇。jQuery select/unselect all siblings

,但我不能工作了,所以任何指針是歡迎的。

<script type='text/javascript' src='http://code.jquery.com/jquery-1.7.1.js'></script>   
    <ul> 
    <li><input id="checkall" type="checkbox" />Select all</li> 
    <li><input type="checkbox" />Child 1</li> 
    <li><input type="checkbox" />Child 2</li> 
    <li><input type="checkbox" />Child 3</li> 
    <li><input type="checkbox" />Child 4</li> 
</ul> 

<script type="text/javascript"> 
      //clicking the first checkbox should check or uncheck all checkboxes in that element 
$(document).ready(function(){ 
    $('#checkall').click(function(){ 
     if ($(this).closest('ul').find('input:checkbox').attr('checked', false)) { 
      $(this).closest('ul').find('input:checkbox').attr('checked', true) 
     } 
     else ($(this).closest('ul').find('input:checkbox').attr('checked', true)); { 
      $(this).closest('ul').find('input:checkbox').attr('checked', false) 
     } 
    }); 
}); 
</script> 

回答

3

.attr('checked', false)將設置'false'值檢查元素的屬性並且不返回布爾值。你可以像這樣簡化你的代碼。

$(document).ready(function(){ 
    $('#checkall').click(function(){ 
     $(this).closest('ul').find(':checkbox').attr('checked', this.checked); 
    }); 
}); 
+0

Thx ShankarSangoli!..就像一個魅力! :) – Mackelito 2011-12-14 15:20:12

4

非常基本的:

$('#checkall').click(function(){ 

     //select ul 
     $(this).closest('ul') 

     //find checkbox 
     .find('> li > input[type=checkbox]') //or : input[type=checkbox] 

     //not first check - is the 'select all' 
     .not(':first') 

     //set value 
     .prop('checked', this.checked) 
    }); 

或短:

$('#checkall').click(function(){ 
    $(this).closest('ul').find('> li > input[type=checkbox]').not(':first').prop('checked', this.checked) 
}); 
相關問題