2011-06-21 17 views
15

में काम नहीं करता है क्या आईई 7 में जोड़ने पर रेडियो बटन चेक करने का कोई तरीका है?रेडियो बटन और .attr ('चेक', 'चेक') आईई 7

प्रत्येक ब्राउज़र में क्या काम करता है, ऐसा लगता है कि यह हर जगह पढ़ने के बावजूद आईई 6,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') करते तो यह है कि यह सही पर सेट है, लेकिन रेडियो वास्तव में जाँच नहीं प्राप्त करता है या के रूप में जाँच की उठा कि कहते हैं।

दुःस्वप्न! कोई और इस पर आ गया है और किसी भी प्रकार का फिक्स है?

उत्तर

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

1.6 कब जारी किया गया था? और अब 1.6.1 ... निश्चित रूप से एक बेहतर समाधान होना है। मेरा मतलब है कि यह निश्चित रूप से 1.6 तक टूट नहीं गया है: डी –

+0

@ डोमिनिक - मैंने अपना जवाब संपादित किया – Neal

+0

@ डोमिनिक मेरा दूसरा अपडेट – Neal

4

प्रयास करें: $itemVariantRowRadio.not(':checked').click().change();

तो आप वास्तव में क्लिक करें चेकबॉक्स बस जैसे आप माउस के साथ उपयोगकर्ता के रूप में करेंगे। not(':checked') आपको यह सुनिश्चित करेगा कि यह पहले से ही पहले से चेक नहीं किया गया था। और बाद में परिवर्तन घटना को ट्रिगर करें, क्योंकि jQuery क्लिक स्वयं ही ऐसा नहीं करता है।

2

एमएसआईई आपको बनाए जाने के बाद input तत्व के type को बदलने की अनुमति नहीं देता है।

जैसा कि इसे बनाने के http://bugs.jquery.com/ticket/1536 और http://api.jquery.com/jQuery/#jQuery2

देखें:

$('<input type="radio">') 
+1

यह वास्तव में इसे ठीक करने लगता है :) –

0

आप डोम से संलग्न के बाद अगर आप की जाँच की विशेषता लागू क्लिक करें घटना को गति प्रदान करने की जरूरत नहीं है: 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); 
संबंधित मुद्दे