2011-06-21 100 views
15

有沒有什麼辦法可以在IE7中追加單選按鈕?單選按鈕和.attr('checked','checked')在IE7中不起作用

什麼似乎在每個瀏覽器中都能正常工作,看起來並不像IE6,7中的工作,儘管在任何地方都能正確閱讀。我完全不知道爲什麼它不起作用。

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


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

現在,如果我在IE6/7做console.log($itemVariantRowRadio.attr('checked')然後它說,它設置爲TRUE,但無線電實際上並沒有得到遏制或拿起作爲託運。

噩夢!任何人都會遇到這種情況,並有任何修復?

回答

34

如果jQuery中> = 1.6:

使用prop如這裏看出:.prop() vs .attr()

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

如果jQuery中< 1.6:

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

甲LSO:

嘗試創建你的元素,像這樣:

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

見琴:http://jsfiddle.net/maniator/6CDf3/
附有2個輸入一個例子:http://jsfiddle.net/maniator/6CDf3/2/

+0

whoa when 1.6 was released?現在1.6.1 ...肯定會有更好的解決方案。我的意思是,這個問題一直沒有解決,直到1.6:D –

+0

@Dominic - 我編輯我的答案 – Neal

+0

@Dominic看到我的第二個更新 – Neal

4

嘗試:$itemVariantRowRadio.not(':checked').click().change();

所以你實際上點擊複選框就像你將用鼠標一樣操作。 not(':checked')會讓你確定它之前沒有被檢查過。之後觸發更改事件,因爲jQuery點擊本身不會自動完成。

0

您不必如果您將選中屬性觸發點擊事件,你把它添加到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); 
相關問題