2014-01-31 23 views
1

我試圖在最後使用All和None複選框創建複選框列表。檢查所有複選框在第二次使用時不起作用

當點擊這些複選框時,會有相當繁重的操作,所以檢查和取消選中過程不會在每個子複選框上引發單擊事件至關重要!

這裏是我的JS:

$(document).ready(function(){ 
    $('#AllCheckbox').click(function(){        
    $('#NoneCheckbox').removeAttr('checked'); 
    $('.TypeCheckbox').attr('checked', 'checked');           
}); 

$('#NoneCheckbox').click(function(){ 
    $('#AllCheckbox').removeAttr('checked'); 
    $('.TypeCheckbox').removeAttr('checked');     
}); 

$('.TypeCheckbox').click(function(){ 
    alert('Type checkbox was clicked'); 
    $('#AllCheckbox').removeAttr('checked'); 
    $('#NoneCheckbox').removeAttr('checked'); 
    }); 
}); 

這裏是我的html:

<label for="1Checkbox">1</label><input type="checkbox" ID="1Checkbox" class="TypeCheckbox" /> 
<label for="2Checkbox">2</label><input type="checkbox" ID="2Checkbox" class="TypeCheckbox" /> 
<label for="3Checkbox">3</label><input type="checkbox" ID="3Checkbox" class="TypeCheckbox" /> 
<label for="AllCheckbox">All</label><input type="checkbox" ID="AllCheckbox" /> 
<label for="NoneCheckbox">None</label><input type="checkbox" ID="NoneCheckbox" /> 

我創建了一個JSFiddle

如果點擊「全部」,它會很好用,所有編號的複選框都會被選中。然後再次點擊「無」,然後點擊「全部」,第二次檢查編號複選框。爲什麼不?

回答

5

使用.prop()而不是.attr()

$('.TypeCheckbox').prop('checked', true/false); 

我很能說明問題,在.prop() vs .attr()給出做訪問它。

Working Fiddle

編輯:

關於第二個想法我餵你不需要None複選框看到DEMO

+0

這偉大工程 - 你能告訴我爲什麼嗎? – Liath

+0

@Lath,請訪問http://stackoverflow.com/questions/5874652/prop-vs-attr很好閱讀 – Satpal

1

使用.prop()

$(document).ready(function() { 
$('#AllCheckbox').click(function() { 
    $('#NoneCheckbox').prop('checked',false); 
    $('.TypeCheckbox').prop('checked', "checked"); 
}); 

$('#NoneCheckbox').click(function() { 
    $('#AllCheckbox').prop('checked',false); 
    $('.TypeCheckbox').prop('checked',false); 
}); 

$('.TypeCheckbox').click(function() { 
    alert('Type checkbox was clicked'); 
    $('#AllCheckbox').prop('checked',false); 
    $('#NoneCheckbox').prop('checked',false); 
}); 
}); 

Demo

+0

閱讀這裏:http://stackoverflow.com/questions/5874652/prop-vs-attr – Pesulap

0

你應該使用prop,不attr

$('#AllCheckbox').click(function() { 
    $('input:checkbox').prop('checked', 'checked'); 
}); 

$('#NoneCheckbox').click(function() { 
    $('input:checkbox').removeAttr('checked'); 
});