/ / Je v jQuery 1.9.1 chyba s prepínačmi? - javascript, jquery, debugging, jQuery-selektory

Existuje chyba s prepínačmi jQuery 1.9.1? - javascript, jquery, debugging, jquery-selectors

Skúšal som programovo vyberať prepínače pomocou jQuery, niečo, o čom som si myslel, že bude také jednoduché, ako zmena začiarknutého atribútu.

Zdá sa však, že nasledujúci kód nerobí to, čo sa očakáva v jQuery 1.9.1 v prehliadači Chrome / Firefox.

Očakávané správanie: Kliknite na div ohraničujúci prepínač -> nastavený atribút „skontrolovaný“ sa nastaví -> vykreslenie začiarknuté v DOM.

Skutočné správanie: Kliknite na div ohraničujúci prepínač -> atribút „skontrolovaný“ sa nastaví -> vykreslí sa skontrolované v DOM pre prvé a druhé kliknuté tlačidlo, nasledujúce tlačidlá sa nevykonajú ako začiarknuté.

jQuery:

$("div.form-type-radio").on("click", function () {
var Id = $(this).find("input[type=radio]").attr("id");
$("form input[type=radio]:not(#"+Id+")").removeAttr("checked");
$("#" + Id).attr("checked", "checked");
console.log($("#" + Id));
});

Tu je jsFiddle - http://jsfiddle.net/GL9gC/

Skúsil som rovnaký kód s predchádzajúcimi verziami jQuery a všetko funguje podľa očakávania.

odpovede:

21 pre odpoveď č. 1

V takom prípade by ste mali použiť prop () namiesto attr ()/removeAttr ().

Tu pracujeme jsFiddle.

jQuery:

$("div.form-type-radio").on("click", function () {
var Id = $(this).find("input[type=radio]").prop("id");
$("form input[type=radio]:not(#"+Id+")").prop("checked");
$("#" + Id).prop("checked", "checked");
console.log($("#" + Id));
});

2 pre odpoveď č. 2

LIVE DEMO

$("div.form-type-radio").on("click", function () {
$(this).find(":radio").prop({checked: true});
});

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