Javascript JQuery NoConflict包装无法处理此文件

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()

我有一个简单的javascript文件,需要用JQuery NoConflict包装,但我似乎无法让它工作。这是一个旋转的标志墙

页面位于/t10.html

我尝试将jQuery实现为变量$j,然后在脚本中调用$I的任何地方都替换为$j。这适用于站点上的另一个脚本,但由于某些原因,它不适用于此脚本。您可以在/t10.html上查看和下载CSS和JS文件

在下面尝试过,但没有效果

$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());