一个按钮元素上的jQuery .attr(’type’,’submit’)在IE7中给出了一个奇怪的错误
我正在通过$.ajax()
解析JSON响应,并根据此对象的值构建表单。 我写的剧本很长,但这就是它正在做的事情:
-
动态创建:
〜表单元素,
〜一个fieldset元素,
〜一个按钮元素,
大约20个文本输入和标签元素 -
将输入和标签附加到字段集
-
将按钮附加到字段集
-
将fieldset附加到表单
- 将表单附加到现有DOM中的元素。
一切都在所有浏览器中工作,除了IE中的一个小片段。 我把它缩小到下面一段代码。 ( doc
是包含document
的变量)
fieldset.append( $(doc.createElement('button')) .addClass('ui-button') .attr('type', 'submit') .html('Re-Rate') .button() );
这是上面的第3步。 它创建一个按钮元素,添加一个类,设置要submit
的type
属性,为其提供一些文本,然后将其附加到fieldset。 IE失败并显示错误“对象不支持此操作”
如果我注释掉.attr()
行,如下所示:
fieldset.append( $(doc.createElement('button')) .addClass('ui-button') //.attr('type', 'submit') .html('Re-Rate') .button() );
一切都按预期工作。
如果你想知道, .button()
方法是jQuery UI
jQuery 不允许您更改或
元素的类型 。
原因是一致性,IE不允许您在将type
插入DOM后更改type
。
jQuery不允许你修改现有按钮元素的type
属性,因为当你尝试这样做时IE会抛出一个错误。
但是,您可以尝试这样的事情(使用jQuery 1.4更简洁的元素创建语法):
fieldset.append( $('