2013-07-02 91 views
0

所有複選框,我想選擇jQuery的事件按一下按鈕所有輸入複選框字段,但是當我按一下按鈕沒有任何反應如何選擇通過按鈕

JQUERY

$('#selAll').on('click', function() { 
    $(".cb").attr('checked', $(this).is(":checked")); 
}); 

HTML

<input type="button" value="Select All" class="btn" id="selAll" /> 
    <input type="checkbox" name="a" value="1" class="cb"> 
    <input type="checkbox" name="b" value="1" class="cb"> 

這是最好的/正確的解決方案嗎?謝謝 JsFiddle example

+0

使用.each()........ – vusan

+0

選擇每個元素使用$(「* .cb」) – Lefsler

+0

@demonofnight爲什麼? –

回答

5

選中一個複選框,你應該使用prop()方法,例如:

$('.cb').prop('checked', true); 

編輯: 這是從jQuery的API文檔建議。我看到壽要切換,可以通過這個來完成:

$('.cb').prop('checked', function(i, val) {return !val;}); 

EDIT2: 如果你想打開/關閉一個鍵所有複選框,你將不得不保持某種紀錄告訴腳本開啓或關閉。最簡單的方法是更改​​按鈕的標題,並按照這種方式進行操作。但這是你的選擇。例如:

$('#button').on('click', function(){ 
    // Change values 
    $('.cb').prop('checked', ($(this).val() == 'Check')); 
    // Change caption of this button 
    $(this).val(($(this).val() == 'Check' ? 'Uncheck' : 'Check')); 
}); 
// HTML 
<input type="button" id="button" value="Check" /> 

當然,如果你只想要一個「全部檢查」按鈕,我的第一個代碼示例適用。

+0

編輯中的切換實際上是從檢查切換到未選中當前項目的狀態(如果有檢查和未檢查的項目,點擊該項目後,你也會得到檢查和未檢查的項目)。 –

+0

看看OP的原始代碼。他試圖將選中的值設置爲布爾值,該布爾值將評估複選框是否被選中。換句話說,他正在切換選擇。我只是把後面的例子放在原因。 – Eric

+0

@Eric我嘗試了這個解決方案並且沒問題,但是如果我使用了切換功能,當我點擊按鈕時,未勾選的字段被選中並且被選中,而不會被選中。有沒有可能解決這種情況?謝謝 –

0

我總是使用字符串設置checked選項「checked」,不知道這是否是最好的方式,但它適用於我的情況。

爲了讓您能夠讓它工作:

變化 $(".cb").attr('checked', $(this).is(":checked"));

$("input.cb").attr('checked', "checked");

這應該工作!

3

$('#selAll').on('click', function() { 
    $(".cb").attr('checked', "checked"); 
    }); 

即使.attr()也可以,但是作爲在評論部分提出建議的功能.prop()

$('.cb').prop('checked', true); 

http://api.jquery.com/prop/

+0

不,這將永遠檢查它 –

+0

@roasted無法理解它正在工作,你能解釋一下嗎?你的意思是說未來的'.cb'類? –

+0

這將工作.. – Anubhab

0

使用!$(this).is(":checked")前面:

$('#selAll').on('click', function() { 
    $(".cb").attr('checked', !$(this).is(":checked")); 
}); 
0

功能全選(){

$('.selectedId').attr('checked', isChecked('selectall')); 

}

函數器isChecked(checkboxId){

var id = '#' + checkboxId; 

return $(id).is(":checked"); 

}

相關問題