2011-12-28 71 views
1

我的html:無法處理禁用複選框

<div class="check"> 
<input class="sfCheckbox" type="checkbox" title="view" disabled="true" checked="checked"> 
<input class="sfCheckbox" type="checkbox" title="view" checked="checked"> 
</div> 

jQuery中我嘗試:

$('.check .sfCheckbox').attr('checked', false); 

代碼工作正常,但我想如果('checked', false)複選框未disable.How讓慾望result.Thanks。

我的意思是如果複選框被禁用,什麼也不做.if沒有'檢查',false.Thanks。

+0

檢查是一個div的類名。如何設置其屬性檢查爲false – 2011-12-28 10:52:32

+0

您的jquery代碼片段正在選擇一個div,但您試圖在其上設置一個checked屬性?我假設你想要在其中一個輸入上設置屬性,而不是div,在這種情況下使用.prop,而不是.attr – kinakuta 2011-12-28 10:52:47

+0

你究竟想在這裏實現什麼?您當前的代碼檢查是否檢查格(不是任何複選框)具有「檢查」屬性。我無法想象這是你的意圖? – Oldskool 2011-12-28 10:52:51

回答

1

試試這個:

添加.not('[disabled]')在你的聲明會做的伎倆

$('.check .sfCheckbox').not('[disabled]').attr('checked', false); 

本聲明將取消與sfCheckbox類是一個元素中帶班所有'enabled'複選框check

+0

謝謝,我知道了。它的工作。 :) – 2011-12-28 11:05:48

1

Try:

 

if(!$(".check").is(":disabled")) { 
$(this).attr('checked', false); 

} 
 
+0

我想對面的上面的代碼。如果複選框禁用不做任何.if不'''檢查',虛假'。謝謝。 – 2011-12-28 10:59:29

+0

確定編輯了代碼 – 2011-12-28 11:04:30

2

如果你正在使用jQuery 1.6或更高版本,不使用.attr()了,有.prop()代替:

$('selector goes here').prop('checked', false); 
1

你可以試試this example。 解釋是用$('。check')你得到的是div元素而不是複選框。您HAVO提供複選框選擇達到你wanto

1

工作代碼:

if($("input").attr("disabled")==undefined) 
     $('input').removeAttr('checked','checked');