在IE7中,jquery动态添加带有'type'属性的按钮元素失败

时间:2010-01-03 14:03:39

标签: jquery internet-explorer-7

代码

var comment = $('<div>')
        .addClass('comment') // problem in IE7
        .attr('id', 'comment-'+item.id)
        .appendTo($('#comments-list');

问题

当程序在IE7中执行.adddClass时,收到错误消息

 Object doesn't support this action

我从IE调试栏中收到此错误。

任何修复?

[更正]:

我做了进一步的调试。并发现问题不在于addClass调用。这是另一部分代码在IE7中不起作用。很抱歉浪费你们的时间。

因为我无法删除这个问题的记录,这里是错误代码(在ie7中):

$('<button>')
   .attr('type', 'button') // This failed in IE7

可能是因为它不支持动态添加的“type”属性。我想我必须切换到&lt; input&gt;元素现在

$('<input')
   .attr('type', 'button')
   .attr('value', 'Button Text')

这只是我在IE7中测试过并且有效。我仍然更喜欢$('&lt; button&gt;')的情况,所以如果有人有任何解决方法,请在这里帮助我。

提前致谢。

3 个答案:

答案 0 :(得分:3)

只是要详细说明这一点(主要是为了像我这样的人在谷歌上找到这个)。 我几乎遇到了同样的问题:

$('<button />')
   .attr('type', 'button')

给了

  

对象不支持此操作

事实证明(至少对我来说),问题不是动态分配类型,而是IE显然不喜欢按钮元素上的“按钮”类型。

改变事物

$('<input />')
   .attr('type', 'button')

让一切顺利。

答案 1 :(得分:1)

创建元素时需要传递有效的XML。

将其更改为:

$('<div></div>')
    ...

答案 2 :(得分:0)

指向发生错误的页面的链接可能会有所帮助。在我看来问题不在于.addClass()函数......

无论如何,为什么不这样做?

var comment = $('<div class="comment" id="comment-' + item.id + '" />')
    .append($('#comments-list');

另外,你不是要说.appendTo($('#comments-list'))吗?现在,您将整个评论列表附加到新评论中。


更新:我已阅读您的修改内容。同样,如果您的代码不起作用,为什么不尝试这样的东西呢?

$('<button type="button">Button Text</button>')

我认为没有任何问题。