簡體   English   中英

如何修復javascript在新的jquery庫上不起作用,而在舊版本的jquery庫上起作用?

[英]How to fix javascript not working on newer jquery library but working on older version jquery library?

我有這個JavaScript代碼,使復選框可以作為收音機工作

JAVASCRIPT

$(function() {$('input[type=checkbox]').click(function() {
        $('input[type=checkbox]').attr('checked', false);
        $(this).attr('checked', true);
    });
});

HTML

<label title="cat"><input name="" type="checkbox" checked>cat</label>
<label title="dog"><input name="" type="checkbox" >dog</label>
<label title="lion"><input name="" type="checkbox" >lion</label>
<label title="fish"><input name="" type="checkbox" >fish</label>
<label title="turtle"><input name="" type="checkbox" >turtle</label>

當我使用版本1.8.3的較舊jquery庫但在嘗試包含版本1.11.0的較新jquery庫時,該方法正常工作,

我該如何解決?

這是http://jsfiddle.net/6upmbbf0/

如果將左上方的jquery版本更改為1.8.3或更低,則它可以工作,但高於1.8.3則不行。

檢索和更新復選框的選中狀態的正確方法是.prop() .attr()只需檢索或更新屬性值; 它不一定更新輸入的基礎狀態


jQuery Core 1.9升級指南提到行為已更改,這說明了為什么您的代碼在jQuery <1.9版中有效。

使用not()而不是兩次切換復選框。 如果首先排除選中的復選框,然后取消選中其他復選框,則效果更好。

$('input[type=checkbox]').not($(this)).prop('checked', false);

小提琴: http : //jsfiddle.net/6upmbbf0/3/

編輯,添加了Salman A的建議以使用prop()而不是attr()

使用'prop'代替'attr'作為

替換代碼

$(function() {$('input[type=checkbox]').click(function() {
        $('input[type=checkbox]').prop('checked', false);
        $(this).prop('checked', true);
    });
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM