2011-06-21 14 views
15

Czy istnieje sposób sprawdzenia przycisków radiowych przy dodawaniu w IE7?Przyciski radiowe i .attr ("sprawdzone", "sprawdzone") NIE działają w IE7

Co wydaje się działać w każdej przeglądarce, nie wygląda na to, że działa w IE6,7 pomimo czytania wszędzie, że robię to poprawnie. Nie mam absolutnie pojęcia, dlaczego to nie działa.

var $itemVariantRowRadio = $("<input/>") 
    .attr("type", "radio") 
    .attr("name", "itemvariant") 
    .addClass("itemvariant") 
    .val('whatever'); 


    $itemVariantRowRadio.attr('checked', 'checked'); 
    $itemVariantRow.append($itemVariantRowRadio) 

Teraz jeśli robię console.log($itemVariantRowRadio.attr('checked') w IE6/7 to mówi, że jest on ustawiony na TRUE, ale radio nie rzeczywiście dostać sprawdzone lub odebrać jako sprawdzone.

Nightmare! Czy ktoś inny natknął się na to i ma jakąś poprawkę?

Odpowiedz

34

Jeśli w jQuery> = 1,6:

Korzystanie prop jak widać tutaj: .prop() vs .attr()

$itemVariantRowRadio.prop('checked', true); 

< Jeśli w jQuery 1.6:

$itemVariantRowRadio.attr('checked', true); 

LSO:

Spróbuj tworzenia elementu tak:

var $itemVariantRowRadio = $("<input/>",{ 
    type: 'radio', 
    name: 'itemvariant', 
    class: 'itemvariant', 
    checked: true, 
    value: 'whatever' 
}); 
$itemVariantRow.append($itemVariantRowRadio); 

Zobacz skrzypce: http://jsfiddle.net/maniator/6CDf3/
Przykładem z 2 wejściami dołączany: http://jsfiddle.net/maniator/6CDf3/2/

+0

kiedy wydano 1.6? a teraz 1.6.1 ... na pewno musi być lepsze rozwiązanie. Mam na myśli na pewno to nie zostało zerwane aż do 1.6: D –

+0

@ Dominic - redagowałem moją odpowiedź – Neal

+0

@Dominic zobacz moją drugą aktualizację – Neal

4

Spróbuj: $itemVariantRowRadio.not(':checked').click().change();

Więc rzeczywiście kliknij pole wyboru tak, jak zrobiłbyś to jako użytkownik myszką. not(':checked') zapewni Ci pewność, że nie został wcześniej sprawdzony. Następnie wywołaj zdarzenie zmiany, ponieważ kliknięcie jQuery samo w sobie tego nie robi.

0

Nie trzeba wywołać zdarzenie click jeśli zastosować sprawdzony atrybut po dołączeniu go do DOM: http://jsfiddle.net/XjHUe/2/

<div id='content'></div> 
var $itemVariantRowRadio = $("<input/>") 
    .attr("type", "radio") 
    .attr("name", "itemvariant") 
    .addClass("itemvariant") 
    .val('whatever'); 
//$itemVariantRowRadio.attr("checked", true); 
$("#content").append($itemVariantRowRadio); 
$(".itemvariant").attr('checked',true); 

var val = $(".itemvariant").attr("checked"); 
alert(val); 
Powiązane problemy