Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用jQuery动态创建复选框元素-奇数IE行为_Javascript_Jquery_Internet Explorer - Fatal编程技术网

Javascript 使用jQuery动态创建复选框元素-奇数IE行为

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

我正在使用jQuery动态创建一些checkbox元素,并将它们附加到一个节点,如下所示

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)执行,每次输出为“开”
我认为这里的核心问题是我需要一种更好的方法来设置复选框的默认选中状态,并设置它们的默认“value”属性。但我还没有找到另一种方法

注意:所有这些代码在Firefox和Chrome中都可以正常工作


这是使用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中无数次遇到这个问题。很高兴解决了这个问题。