2010-05-09 59 views
5

我想用jquery创建一个按钮。 我用下面的代码IE 7不喜欢jquery('<button/>').attr('type','button')

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

然而这部作品在Safari浏览器,IE8 FF但不是IE7

我试图使用attr函数:

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

这也不行。

任何想法会有什么作用?我想,如果我不指定类型,将默认按钮,但我宁愿做

感谢您的帮助

+0

'

+4

实际上[button](http://www.w3.org/TR/html401/interact/forms.html#h-17.5)默认为type = submit。 – Tgr 2010-05-09 19:56:39

+2

按钮确实有一个type属性,type = button,type = submit和type = reset – salmane 2010-05-09 20:02:43

回答

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'); 

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

+0

它一定是我最终的东西,因为我尝试过,它仍然无法正常工作。在我看来,IE7,IE8,FF和Safari的默认类型=“按钮”也许...我可能会让它不被声明 – salmane 2010-05-09 21:30:14

+0

不,这绝对是不正确的:所有的“好”浏览器遵循W3C规范,其中规定默认类型是“提交”。 (那是在“标准模式”;如果你在怪癖模式下,那么(A)我不知道他们做了什么,(B)走出怪癖模式。) – Pointy 2010-05-09 22:18:12

+0

此外,这绝对适用于IE。当你说“它仍然不起作用”时,你的意思是什么?你有Javascript错误吗? – Pointy 2010-05-09 22:19:04

1

你试过:

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

然后你就可以追加在此随地你的文件。通常,您可以用这种方式使用字符串文字来创建几乎任何DOM元素。

+0

毫无疑问,我的麻烦是按钮的“类型”。 只要我指定IE 7拒绝它 – salmane 2010-05-09 19:55:38

+0

你当然可以这样做:var $ btn = $(“”); – BradBrening 2010-05-09 20:06:00

+0

我也试过,但没有奏效。一些如何,只要我介绍的类型属性IE7不喜欢....可以这是一个jQuery 1.4的错误? – salmane 2010-05-09 20:07:02

-1

我想你想用这个$(“:提交”)

它发现任何东西,作为一个提交按钮。 参见:http://api.jquery.com/submit-selector/

+1

上面的文本是节点创建命令,而不是DOM选择器命令。您可以将新节点追加到DOM。 – artur02 2011-05-10 09:53:36