jQuery和Mootools可以一起工作吗?

jQuery和Mootools可以一起工作吗?

如果不是那样的话?

除了noConflict之外,还有更多noConflict

jQuery是一个侵入式库。 它为它接触的每个元素添加了一个内部jQuery123 (对于一些随机化的每个实例值为123 )属性(除了其他原因之外,它与数据或事件处理程序有关)。 在IE中,此属性也会反映为属性。

因此,如果MooTools或任何其他库(或者实际上是一个普通的DOM方法)出现并开始搞乱那些属性/属性,克隆元素或者破坏innerHTML ,他们可能会搞砸这些所谓的唯一标识符,导致jQuery混淆并以一种非常难以调试的方式开始行为不端。

jQuery还摆弄了一堆事件代码,试图让提交/聚焦/模糊/聚焦/聚焦/鼠标中心/鼠标离开事件在浏览器中起作用。 这可能会混淆不期望它的其他库代码。

因此,使用jQuery 1.4,您可以同时使用另一个库,只要它们处理不相互交互的单独元素。 (jQuery 1.3对于它所触及的元素也更为混杂。)

但总的来说,我不会在一个页面上推荐两个主要框架。

jQuery可以在无冲突模式下使用:

jQuery.noConflict();

或者可以使用jQuery而不是$

jQuery('#myelement').hide();

在MooTools中也有一个document.id()方法可以用来代替$

document.id('myelement');

如果您希望能够使用$ ,可以尝试下面的代码段:

 (function($) { $('#myelement').click(function() { ... }); })(jQuery); 

以同样的方式,你可以使用MooTools的$

在Mootools中使用美元安全模式,你应该没问题,因为jQuery不会扩展本机。

只需使用jQuery.noConflict将jQuery分配给$以外的其他东西:

  

$ now是指在启动jQuery之前设置的任何内容。 jQuery可以通过jQuery对象访问。

是的,当然你可以在兼容模式下使用。 但是你必须小心jQuery补充,因为它可能会引起一些麻烦,因为它们没有在兼容模式下编程,并且可能导致与其他库补充的冲突。 要修复此问题,您只需在补充中更改每个jQuery的$

希望这可以帮助。