在一个按钮元素上的jQuery .attr('type','submit')在IE7中给我一个奇怪的错误

Ste*_*hen 6 javascript jquery internet-explorer attributes dom

我正在解析JSON响应并通过$.ajax()此对象的值构建表单.我写的剧本很长,但这就是它正在做的事情:

  1. 动态创建:
    〜表单元素,

    字段集元素,
    〜按钮元素,~20左右的文本输入和标签元素

  2. 将输入和标签附加到字段集

  3. 将按钮附加到fieldset

  4. 将fieldset附加到表单

  5. 将表单附加到现有DOM中的元素.

一切都在所有浏览器中工作,除了IE中的一个小片段.我把它缩小到下面的代码.(doc是一个包含的变量document)

fieldset.append(
    $(doc.createElement('button'))
        .addClass('ui-button')
        .attr('type', 'submit')
        .html('Re-Rate')
        .button()
);
Run Code Online (Sandbox Code Playgroud)

这是上面的第3步.它创建一个按钮元素,添加一个类,将type属性设置为submit提供一些文本,然后将其附加到fieldset.IE失败并显示错误"对象不支持此操作"

如果我注释掉这样的.attr()行:

fieldset.append(
    $(doc.createElement('button'))
        .addClass('ui-button')
        //.attr('type', 'submit')
        .html('Re-Rate')
        .button()
);
Run Code Online (Sandbox Code Playgroud)

一切都按预期工作.

如果您想知道,该.button()方法是jQuery UI

Nic*_*ver 10

jQuery的不允许你改变type<input><button>元素.

这样做的原因是一致性,并且IE不允许您更改type一旦插入DOM.

  • @Stephen - 正确,但jQuery在所有情况下都不允许它,即使IE在你的例子中也没问题.要创建元素,只需使用元素html创建它:`$('<button type ="submit"/>')` (4认同)