`attr('checked',false)`不在IE6上工作

时间:2010-11-11 11:01:07

标签: javascript jquery

正如标题所说,我无法让.attr('checked', false)在IE6上工作。我正在克隆一些HTML,然后在将新克隆的HTML分配给一个元素之前,我运行它并取消检查新克隆部分中的所有复选框,这在除了IE 6之外的所有浏览器中都能正常工作。 p>

以下是代码:

    //give each input and select a custom id
    clone.find('input, select').each( function( i ) {

            //get the id attribute
            var id = $(this).attr('id');

            //uncheck all of the tick boxes
            $(this).attr('checked', '');

            //get the name attribute
            var name = $(this).attr('name');

            $(this).attr('name', name+"_"+count)
            $(this).attr('id', id+"_"+count+"_"+i)

    });

    //append the newly created area to the area wrapper
    clone.appendTo('[data-custom="area_wrapper"]');

有什么方法可以解决这个问题吗?

3 个答案:

答案 0 :(得分:7)

最简单的解决方案也是优化:

this.checked = false;

事实上,您可以将此优化应用于所有代码:

        //get the id attribute
        var id = this.id;

        //uncheck all of the tick boxes
        this.checked = false;

        //get the name attribute
        var name = this.name;

        this.name = name+"_"+count;
        this.id = id+"_"+count+"_"+i;

这是因为底层的jQuery代码无论如何都会访问这些属性(attr主要直接使用属性直到jQuery 1.6)。

有关http://whattheheadsaid.com/2010/10/utilizing-the-awesome-power-of-jquery-to-access-properties-of-an-element的更多信息。

答案 1 :(得分:3)

尝试

.removeAttr("checked")

答案 2 :(得分:1)

没有HTML属性'checked = false',对于复选框只有'checked = checked',对于未选中的框没有任何内容。

使用.removeAttr('checked');