1

我正在尝试将双滑块插件与 estalge 视图框一起运行。它们都使用 jQuery,并且单独工作,但是当我将它们放在一起时,一个中断。我曾尝试实施 jQuery 无冲突规则,但我认为我可能在某处遗漏了一个小细节。到目前为止,我的编码看起来像:

<script src="scripts/jquery-1.3.2.min.js" type="text/javascript"></script>
<script src="scripts/jquery.easing.1.3.js" type="text/javascript"></script>
<script src="scripts/jquery.timers-1.2.js" type="text/javascript"></script>
<script src="scripts/jquery.dualSlider.0.3.js" type="text/javascript"></script>
<!-- START ESTALGE -->
<script src="js/jquery-1.6.2.min.js"></script>
<script src="js/jquery.etalage.min.js"></script>

<script type="text/javascript"> 

  $.noConflict();
  jQuery(document).ready(function($) {
                jQuery('#etalage').etalage();
            });

    $(".carousel").dualSlider({
                auto:true,
                autoDelay: 6000,
                easingCarousel: "swing",
                easingDetails: "easeOutBack",
                durationCarousel: 1000,
                durationDetails: 500

            });

    </script>

任何帮助将不胜感激。谢谢你

4

6 回答 6

7

您使用noConflict不正确。

<script src="scripts/jquery-1.3.2.min.js" type="text/javascript"></script>

<!-- INCLUDE ANY SCRIPTS HERE THAT RELY ON 1.3.2 -->

<script type="text/javascript"> 
    // HERE WE CAN USE 1.3.2

    // re-assign 1.3.2 to a new variable so we can use it later
    var $jq132 = $.noConflict();
</script>

<script src="js/jquery-1.6.2.min.js"></script>

<script type="text/javascript"> 

    // $ is now 1.6.2 and $jq132 is 1.3.2, both can be used.

</script>
于 2012-04-12T20:35:10.213 回答
5

您可以有多个 jQuery 版本,$.noConflict将返回您的 jQuery 对象。您需要将其另存为另一个变量。

<script src="scripts/jquery-1.3.2.min.js" type="text/javascript"></script>
<script src="js/jquery-1.6.2.min.js"></script>
<script>
    $jq = $.noConflict();
    // $jq is jQuery 1.6.2
    // $ is jQuery 1.3.2
</script>

演示:http: //jsbin.com/uhazan/3/edit#javascript,html,live

注意:jQuery变量将设置为 1.6.2(第二个),如果您希望它为 1.3.2(第一个),请传递true$.noConflict.

PS你可能想把你的$(".carousel").dualSlider里面$(document).ready(

于 2012-04-12T20:33:54.457 回答
1

试着把你的slider里面jQuery(document).ready(function($) {});

来自所有者网站

Etalage 是否支持 jQuery 无冲突模式?

插件本身没有冲突准备。只需将 替换为"$""jQuery"启动插件的位置,如下所示:

jQuery(document).ready(function(){
    jQuery('#etalage').etalage();
});
于 2012-04-12T20:33:20.057 回答
0

你不需要两个 jQuery Core Lib 包括

试试这个:

<script src="scripts/jquery-1.6.2.min.js" type="text/javascript"></script>
<script src="scripts/jquery.easing.1.3.js" type="text/javascript"></script>
<script src="scripts/jquery.timers-1.2.js" type="text/javascript"></script>
<script src="scripts/jquery.dualSlider.0.3.js" type="text/javascript"></script>
<!-- START ESTALGE -->
<script src="js/jquery.etalage.min.js" type="text/javascript"></script>

<script type="text/javascript"> 

 jQuery(document).ready(function($) {

 jQuery('#etalage').etalage();
 jQuery(".carousel").dualSlider({
            auto:true,
            autoDelay: 6000,
            easingCarousel: "swing",
            easingDetails: "easeOutBack",
            durationCarousel: 1000,
            durationDetails: 500

        });
});
</script>
于 2012-04-12T20:32:14.713 回答
0

$(".carousel").dualSlider({条线在jQuery(document).ready()函数之外,我很确定这不是你的意图。目前,这将起作用:

jQuery.noConflict();
jQuery(document).ready(function($) {
    $('#etalage').etalage();

    $(".carousel").dualSlider({
        auto:true,
        autoDelay: 6000,
        easingCarousel: "swing",
        easingDetails: "easeOutBack",
        durationCarousel: 1000,
        durationDetails: 500
    });
});

但是,您的代码还有其他问题。您引入了两个版本的 jQuery,其中一个非常旧(1.3.2)。你不会得到好的结果。如果有一些依赖于旧 jQuery 的库,请考虑不使用该库。无论如何,它可能无法在此页面上正常工作,因为该库的任何运行时活动都只能访问 jQuery 1.6。jQuery .noConflict 文档提到您可以提供 booleantrue作为参数来.noConflict释放 jQuery 关键字,但是到那时,您加载的插件已经在旧版本附近关闭。

于 2012-04-12T20:30:36.030 回答
0

如果您必须使用多个版本的 jquery,请使用

<script src="scripts/jquery-1.3.2.min.js" type="text/javascript"></script>
<script>
    var jq132 = jQuery.noConflict();
</script>
<script src="js/jquery-1.6.2.min.js"></script>

现在调用旧版本的 jquery

jq132('element').doSomething();

和较新版本的 jquery 可能如下

$('element').doSomething();
于 2012-04-12T20:36:54.867 回答