如果页面还包含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());
答案 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次。