Javascript 使用jQuery动态创建复选框元素-奇数IE行为
我正在使用jQuery动态创建一些checkbox元素,并将它们附加到一个节点,如下所示Javascript 使用jQuery动态创建复选框元素-奇数IE行为,javascript,jquery,internet-explorer,Javascript,Jquery,Internet Explorer,我正在使用jQuery动态创建一些checkbox元素,并将它们附加到一个节点,如下所示 var topics = ['All','Cat1','Cat2']; var topicContainer = $('ul#someElementId'); $.each( topics, function( iteration, item ) { topicContainer.append( $(document.createElement("li")) .ap
var topics = ['All','Cat1','Cat2'];
var topicContainer = $('ul#someElementId');
$.each( topics, function( iteration, item )
{
topicContainer.append(
$(document.createElement("li"))
.append(
$(document.createElement("input")).attr({
id: 'topicFilter-' + item
,name: item
,value: item
,type: 'checkbox'
,checked:true
})
.click( function( event )
{
var cbox = $(this)[0];
alert( cbox.value );
} )
)
.append(
$(document.createElement('label')).attr({
'for': 'topicFilter' + '-' + item
})
.text( item )
)
)
} );
我遇到的问题有两方面(仅在IE中有)
- 复选框被添加到页面中,但当我为该值指定“true”时,它们的默认选中状态为未选中。(使用“已检查”的值进行测试没有区别)
- 当
警报时(cbox.value)代码>执行,每次输出为“开”
这是使用IE 7.0.5730.11进行的jQuery 1.3.1测试。Internet Explorer不允许您更改不属于DOM一部分的输入的选中值。在添加项目后,尝试设置选中的值,看看是否有效。我重复使用了一些代码,并且根据遇到了类似的问题 我发现解决方案是简单地移动属性声明
type: 'checkbox',
从头开始,即:
$(document.createElement("input")).attr({
type: 'checkbox',
这个问题在我所有的浏览器中都会出现,所以我认为这不是IE的问题,而是jquery的“问题”。对我来说,设置值(在append之前或之后)并不重要。区别在于我声明输入类型的时间/位置。选中复选框的“checked”属性的状态不是true,而是string“checked”。我通常使用jQuery向DOM添加元素,方法是:
var el = $('<input type="checkbox" id="topicFilter-' + '"'
+ ' checked="checked" />');
$(topicContainer).append(el);
var el=$('');
$(topicContainer).append(el);
在我看来,更清晰的阅读方式就像HTML。如果它在IE中也不起作用,我会被诅咒的,我已经这样做了很多年。我在IE中无数次遇到这个问题。很高兴解决了这个问题。