Javascript JQuery NoConflict包装无法处理此文件
我有一个简单的javascript文件,需要用JQuery NoConflict包装,但我似乎无法让它工作。这是一个旋转的标志墙 页面位于/t10.html 我尝试将jQuery实现为变量$j,然后在脚本中调用$I的任何地方都替换为$j。这适用于站点上的另一个脚本,但由于某些原因,它不适用于此脚本。您可以在/t10.html上查看和下载CSS和JS文件 在下面尝试过,但没有效果Javascript JQuery NoConflict包装无法处理此文件,javascript,jquery,conflict,Javascript,Jquery,Conflict,我有一个简单的javascript文件,需要用JQuery NoConflict包装,但我似乎无法让它工作。这是一个旋转的标志墙 页面位于/t10.html 我尝试将jQuery实现为变量$j,然后在脚本中调用$I的任何地方都替换为$j。这适用于站点上的另一个脚本,但由于某些原因,它不适用于此脚本。您可以在/t10.html上查看和下载CSS和JS文件 在下面尝试过,但没有效果 $j = jQuery.noConflict(true); $j(document).ready(function()
$j = jQuery.noConflict(true);
$j(document).ready(function(){
还尝试了像第二个答案所说的那样包装外部JS文件。事实上,我已经在那个页面上尝试了所有这些解决方案,但仍然无法让它工作
救命啊
我不能把这个网站上,直到我得到这个包装,但我已经尝试了没有工作
调用外部JS文件的代码如下:
<link rel="stylesheet" href="/js/brandsbox/brandsbox.css" type="text/css">
<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script type="text/javascript" src="/js/brandsbox/brandsbox.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$.brandsBox.embed('#slider_container', {
"collection": "/em/customer-wall/collection.xml",
"cols": 2,
"rows": 5,
"scrollingTransitionSpeed": "slow",
"scrollingDelay": 2000,
"scrollingMode": "full",
"startOpacity": 1,
"hoverOpacity": 1
});
});
</script>
<div id="slider_container" style="width: 218px; height: 500px;"></div>
$(文档).ready(函数(){
$.brandsBox.embed(“#滑块_容器”{
“collection”:“/em/customer-wall/collection.xml”,
“科尔斯”:2,
“行”:5,
“scrollingTransitionSpeed”:“slow”,
“滚动延迟”:2000年,
“滚动模式”:“完全”,
“startOpacity”:1,
“悬停不透明度”:1
});
});
我尝试按照DoubleU23建议的方式包装它,但代码没有启动(请参见相同的域名,但文件/t11.html):
//关闭
(函数(窗口,$,未定义){
//$.ready()的速记;
$(函数(){
//把你的代码放在这里
$.brandsBox.embed(“#滑块_容器”{
“collection”:“/em/customer-wall/collection.xml”,
“科尔斯”:2,
“行”:5,
“scrollingTransitionSpeed”:“slow”,
“滚动延迟”:2000年,
“滚动模式”:“完全”,
“startOpacity”:1,
“悬停不透明度”:1
});
});
})(window,jQuery.noConflict());
我建议始终使用闭包(您正在谈论的这个包装函数)
您可以通过关键字
JavaScript Closures
了解更多关于这个主题的内容,@Bramar和DoubleU23的答案在技术上都是正确的,但当我在直播网站上看到这个脚本时,他们都没有使用过。这两种解决方案在我的测试页面上都能独立工作,这意味着脚本仍然启动并完成了它的任务,但当放到Magento页面上时,它们都不起作用
问题在于Magento的Prototype JS库干扰了站点上的所有jQuery脚本。其他jQuery脚本已由外部开发人员修复,但我无法将它们用于此项目
最终的解决方案是创建一个iframe,其中包含代码,并将其放在我的Magento模板页面上。这将JS隔离到iframe,并导致与Magento项目(如“添加到购物车”按钮)发生冲突
经验教训:不要完全注销iframe。它们可能在非常有限和独特的情况下有用。在您的站点上的位置。请在此处发布问题代码。@Barmar编辑了原始问题以回答您的问题。有更新@Barmar吗?在这个问题上,我真的需要一些帮助。我看不到t10.html或brandsbox.js上使用
jQuery.noConflict
。我应该寻找什么?问题的症状是什么?我去了网站,看到了旋转的标志墙。你好,布拉玛,谢谢你回来查看。我创建了一个名为t11.html的新文件,在这里我实现了下面的@DoubleU23解决方案。我还尝试了stackoverflow上已知的所有jquery.noconflict解决方案,但没有成功。html运行得很好!但是当我在我的工作站点(Magento)上实现它时,它与原型库冲突,因此没有冲突的需求。我们的目标是让这个脚本在noconflict实现的情况下独立运行,然后我将在我的主站点上测试它,该站点上有其他冲突的库。我现在不能把它放在那里b/c然后我的添加到购物车按钮坏了。谢谢你的回复。下面是我在函数中包装的代码,以及我的原始$(document).ready(function(){替换为$(function()){查看关于我如何实现它的原始问题。它不起作用并启动javascript。我认为这与调用外部JS文件有关,我也需要以某种方式包装它。我尝试在您站点的控制台中访问jQuery。jQuery('.brandsbox_item_image')
返回=>x.fn.x.init[162]
我不知道这是哪一个框架。但它不是jQuery。在调用noConflict函数之前,您似乎覆盖了jQuery(使用prototype?)。您好@DoubleU23,谢谢您的回复。我相信这是jQuery,因为x.fn.x.init[162]是“真正的代码”JQuery缩小后的脚本在JQuery.js丢失时无法运行。而在该域上运行我们商店的Magento是基于原型的(这就是我需要JQuery NoConflict的原因),此页面是一个简单的XHTML页面,除了上面的代码外,没有加载其他库。请尝试下载这些文件并在您的服务器上运行。是否有更新@DoubleU23?我确实需要一些有关此问题的帮助。
<script type="text/javascript">
// closure
(function(window, $, undefined){
// shorthand for $.ready();
$(function() {
// put your code here
$.brandsBox.embed('#slider_container', {
"collection": "/em/customer-wall/collection.xml",
"cols": 2,
"rows": 5,
"scrollingTransitionSpeed": "slow",
"scrollingDelay": 2000,
"scrollingMode": "full",
"startOpacity": 1,
"hoverOpacity": 1
});
});
})(window, jQuery.noConflict());
</script>
// closure
(function(window, $, undefined){
// shorthand for $.ready();
$(function() {
// put your code here
});
})(window, jQuery.noConflict());