JQuery与其他JQuery库冲突

我使用jquery作为模块。 我的joomla模板有一个集成的jquery菜单。 所以他们互相冲突。

有没有办法解决这个问题。 遵循模块的脚本代码

 window.onload = function () { var container = jQuery('div.sliderGallery'); var ul = jQuery('ul', container); var itemsWidth = ul.innerWidth() - container.outerWidth(); jQuery('.slider', container).slider({ min: 0, max: itemsWidth, handle: '.handle', stop: function (event, ui) { ul.animate({'left' : ui.value * -1},340); }, slide: function (event, ui) { ul.css('left', ui.value * -1); } }); };  

你需要做的就是修复你的问题是取消别名jQuery函数并将其分配给另一个变量名(请记住:变量可以是函数)。 您需要使用jQuery.noConflict()函数来取消$()函数的别名。 这里有一个要做的:

 // ...after all of Joomla's JS is done executing... // before loading your version of jQuery var jquery = {}; // aka new Object() jquery.joomla = jQuery.noConflict(); // moves jQuery into another namespace // load your version 

现在,当你加载你的版本时,它将接管jQuery和$命名空间,但如果你需要它,你仍然会有另一个对Joomla的jQuery函数的引用。 要重新迭代,基本流程是:

  1. 加载Joomla的jQuery
  2. 运行Joomla的jQuery依赖代码
  3. 将Joomla jQuery移动到另一个命名空间
  4. 加载你的jQuery
  5. 使用$()执行代码

尝试

 var J = jQuery.noConflict(); 

之后使用J变量而不是$或jQuery作为自定义代码

尝试

 jQuery.noConflict(); 

例如

  

我已更新您的代码以使用jQuery检查加载的文档。 有关使用noConflict函数的详细信息,请单击此处 。

你是说你的joomla同时加载了2种jquery? 首先你的菜单加载jquery然后你的模块加载jquery?

这里是解决方案:在joomla模板中,我们可以覆盖模块或组件视图(我假设您必须使用joomla 1.5.x对吗?)

  1. 在你的模板中创建一个名为html / eg的目录:templates / yourTemplate / html /

  2. 将modules / mod_yourMenu / tmpl /.*中的文件复制到你的模板html(templates / yourTemplate / html / mod_yourMenu /) – > *你不需要添加tmpl / *

  3. 编辑里面的php文件并删除加载jquery的所有标记

  4. 对使用jquery的模块执行步骤1-3。

  5. 编辑你的模板,把标签加载到最新版本的jquery。

它现在应该工作:)

只是将jq脚本包装在自调用函数中。

 (function($){ $(document).ready(function(){ $('div').click( function(){ alert('ding'); }); }); })(jQuery); 

这将创建一个私有范围,因此您不必担心任何冲突。 你可以跳过jQuery.noConflict()的所有不安。 解决方案,你不必放弃那美妙的$! 当我知道在工作中有其他代码块(例如,任何cms)时,我这样做是habbit问题 – 即使在我的测试之后添加了新的扩展,它也不应该破坏我的jQuery。

jQuery Cookbook中有一个很棒的概述(http://listic.ru/jQuery_Cookbook.pdf-第1.17章)。 如果它对Resig足够好,我想这对我有用!