IE 7不喜欢jquery('<button>')。attr('type','button')</button>

时间:2010-05-09 19:49:29

标签: jquery internet-explorer

我正在尝试使用jquery创建一个按钮。 我使用以下代码

jquery('<button/>', {type:'button'}).text(name)

然而,这适用于Safari,FF IE8但不适用于IE7

我尝试使用attr函数:

jquery('<button/>').attr('type','button').text(name)

这也不起作用。

任何想法会起作用吗?我想如果我没有分配一个类型,它将默认为按钮,但我宁愿这样做

感谢您的帮助

3 个答案:

答案 0 :(得分:5)

试试这个:

var button = $('<button type="button"/>');

现在,实际上,按钮的默认类型是IE中的“按钮”(至少7个,不确定标准模式8)。但是上面应该有效。我前几天刚碰到这个。 IE允许您在创建元素时在元素语法中提供类型,并且似乎jQuery几乎将其参数直接传递到此处的低级DOM API。

哦,它也适用于FF和Chrome。


编辑 - 一年有什么不同,是吗?现在使用jQuery 1.4.4或jQuery 1.5.x,我无法使用该机制。好消息是jQuery 1.6看起来像OP想要的那样:通过以类似jQuery的方式设置“type”。

的作用似乎是在元素上直接调用“.setAttribute()”。因此:

var b = $('<button/>');
b[0].setAttribute('type', 'button');

抛出异常, 正确设置“type”属性。 (这本身有点奇怪,因为微软明确将“类型”记录为只读。)1.6的变化似乎是沿着同样的路线。以前,库确实检查了“type”并明确禁止在DOM中已经存在的元素上设置它,但是会继续尝试将其设置为不在DOM中的元素的简单属性。现在,1.6代码调用“.setAttribute()”来设置“类型”,这(因为我不知道的原因)工作正常。

答案 1 :(得分:1)

你试过了吗?

var $btn = $("<button>Button Text</button>");

然后您可以将其附加到文档中的任何位置。通常,您可以使用字符串文字以这种方式创建任何DOM元素。

答案 2 :(得分:-1)

我想你想用这个$(':submit')

它会找到任何充当提交按钮的内容。 请参阅:http://api.jquery.com/submit-selector/