2014-10-30 83 views
-1

嘗試添加由複選框啓動的jQuery功能時遇到了一個奇怪的問題。我的複選框似乎是切換選中的屬性,因爲從視覺上看,複選標記在點擊時切換,但「checked」屬性實際上從不改變。複選框選中屬性不翻轉

這裏是我的問題的例子:http://jsfiddle.net/ez710gxL/3/

<input id="check_box_2" class="css-checkbox padding-left-3" type="checkbox" checked="checked" /> 
<label for="check_box_2" name="cb_lbl_2" class="css-label" style="margin-top:5px; margin-left:10px;">Show Note</label> 

我的問題是: 如果檢查到的屬性不改變,怎麼能使用jQuery,以確定是否複選框被選中或不?

+0

你忘記添加了jQuery到你的演示,還是純粹是某種HTML的問題? – 2014-10-30 18:53:22

+0

看起來分叉小提琴:檢查複選框狀態使用.prop()方法http://jsfiddle.net/143Lyhxo/作爲@dave在他的回答中陳述 – 2014-10-30 18:57:49

+0

對不起@DavidThomas,我沒有忘記添加jQuery的演示。我在這裏更新了它:http://jsfiddle.net/ez710gxL/3 – EricBellDesigns 2014-10-30 19:00:52

回答

1

好了,顯然這個問題是不是與道具/ ATTR撥動「檢查」,而是財產更新查看瀏覽器的開發人員工具時。當我檢查複選框,選中屬性始終保持「選中」,但下面的代碼工作,以確定是否該複選框被實際檢查或沒有(@ War10ck的推薦代碼):

$('#check_box_2').is(':checked') 
2

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

設置.prop("checked", true)。這是.prop()優於.attr()的最大優點之一,因爲.prop()可以設置非字符串的值。

下面是關於如何使用它的一個工作示例:

setInterval(function() { 
 
    if ($("#chkBox1").prop("checked")) 
 
    $("#chkBox1").prop("checked", false); 
 
    else 
 
    $("#chkBox1").prop("checked", true); 
 
    }, 1000);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<input type="checkbox" value="Test" id="chkBox1" checked />

+0

你必須有一個水晶球 – 2014-10-30 18:51:55

+0

@dave我試過沒有任何成功。 – EricBellDesigns 2014-10-30 18:53:13

+1

讓我們來看看你的代碼。你的小提琴中沒有JavaScript或jQuery。你可以在我上面的例子中看到它是如何工作的 – dave 2014-10-30 18:55:41