在Internet Explorer中,jQuery出现“对象不支持此属性或方法”

11

我正在使用jQuery为网站添加一些动态内容。

我尝试使用以下代码按需创建新的DOM元素:

container = $('<div id="myContainer"></div>');

这在Firefox和Safari中完美运行,但是Internet Explorer会生成一个错误。IE的错误是:“对象不支持此属性或方法”。
我知道jQuery已经正确加载,并尝试了jQuery$语法。
有什么想法是什么可能导致这种情况?
3个回答

21

我不知道它是否有帮助,但我解决了我的问题。基本上,IE不想将jquery对象分配给未定义的变量。

所以我把它声明为局部变量。

之前:

function foo() {
  bar = $('#bar');
}

之后:

function foo() {
  var bar = $('#bar');
}

1
对我有用。你可能帮我省去了很多沮丧 :) 谢谢 - theosp
这是正确的答案。我没有意识到自己变得邋遢了,而是在需要“var parent = $('#elem')”时使用了“parent = $('#elem')”。我第一次同意IE的观点。如果我要将一个变量命名为现有全局变量的名称,我最好先声明它为一个新变量! - Gavin

10

如果你想要添加一个DOM元素,代码需要做一些修改:

$('body').append('<div id="myContainer"></div>');
// body can be whatever containing element you want to hold myContainer
$('#myContainer').html('whatever you want inside of myContainer');

1
仍然不确定为什么原始方法不起作用(因为jQuery文档中列出了它),但您的方法是一个完美的替代方案。谢谢。 - B. Slavin

2

我有一个类似的问题。当你尝试修改全局符号时,Internet Explorer会抛出这个错误。这不仅适用于保留字。我的例子是:

function foo() {
    iframe = $("myDiv").append("<iframe></iframe>");
}

这是解决方法:
function foo() {
    var iframe = $("myDiv").append("<iframe></iframe>");
}

同样地:

function foo() {
    myIframe = $("myDiv").append("<iframe></iframe>");
}

(但第一种方式更好)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接