2013-03-07 141 views
2

HTML:。是( ':勾選')總是返回true

<table id="list"> 
    <tr> 
     <td><input type="checkbox" checked="true"></td> 
     <td>...</td> 
    </tr> 
    <tr> 
     <td><input type="checkbox" checked="true"></td> 
     ... 
    </tr> 
    ... 
</table> 

JS:

$('#list tr').each(function(){ 
    console.log(
     $(this).find('input[type="checkbox"]').is(':checked') 
    );  
}); 

問題:上面的日誌語句總是返回true。每個tr都有一些數據,我想用這些數據執行一個操作。但是用戶可以取消選擇在這種情況下不可行的一些實體,因爲is(':checked')總是返回true,即使該條目被取消選擇/取消選中。

任何想法如何解決這個問題?

+0

但在你的例子中,他們被檢查。 – j08691 2013-03-07 19:05:42

+1

你甚至不聽「變化」事件。 '每個!==事件'。 – undefined 2013-03-07 19:06:22

+0

您的標記錯誤checked =「true」無效,檢查有效的檢查值,檢查=「檢查」和檢查=「」。 – Musa 2013-03-07 19:11:23

回答

3

您'已檢查'屬性的值爲true,所以它將返回true,因爲即使有<input type="checkbox" checked />也將被檢查。

我用您的代碼創建了一個demo,並使用附加函數檢索.is(":checked"),因爲它的屬性已更改。

$("input").change(function() { 
    console.log($(this).is(':checked')); 
}); 

它顯示了變化。你的問題必須在其他地方。

2

首先選擇了所有與下面的語句複選框,所以如果一個被選中,它將返回true

$(this).find('input[type="checkbox"]').is(':checked') 

二的檢查默認值,應檢查=「檢查」。

2

我的猜測是你實際使用的是這樣的:

input type="checkbox" checked="false" 

這會導致選中的複選框,因爲"false"(字符串)計算結果爲true

如果您希望取消選中某個複選框,請不要包含checked屬性。