mootools与jQuery不兼容

时间:2010-12-10 01:30:32

标签: jquery

如果页面还包含mootools-core.js,则以下jQuery代码段会失败。

foo2对象没有元素。这是因为find(“#content”)无法返回任何内容。

var foo1 = $("<div><div id='content'>HAGGIS</div></div>");  
var foo2 = foo1.find("#content");

alert("foo1("+foo1.length+"): "+$('<div>').append(foo1.clone()).remove().html()  
    + "\n\n" +  
      "foo2("+foo2.length+"): "+$('<div>').append(foo2.clone()).remove().html());

3 个答案:

答案 0 :(得分:3)

好的,这被证实是mootools的一个问题。

mootools会覆盖Element.getElementById,之后jQuery的find(“#content”)会失败。

http://forum.jquery.com/topic/jquery-noconflict-mootools-load-does-not-work-with-specified-div

答案 1 :(得分:1)

getElementById在Document对象中,因此这是正确的代码:

Document.prototype._getElementById = Document.prototype.getElementById;

这仅适用于Chrome(9.0.597.98),我会尝试其他解决方案......

新编辑:快乐得到了!适用于所有经过测试的浏览器(hoooray!):

document._getElementById = document.getElementById;

答案 2 :(得分:0)

复制getElementById并让jQuery调用那个。{在进入mootools之前执行此操作:

Element.prototype._getElementById = Element.prototype.getElementById;

然后在jQuery源代码中搜索并替换context.getElementById并替换为context._getElementById。 jquery-1.4.4中只发生了4次。