砌体脚本阻止了另一个脚本

时间:2013-06-17 20:04:51

标签: javascript jquery conflict overwrite

我在一个网站上工作,我有一堆脚本彼此紧密合作。

我实现了另一个砌体脚本,它本身可以正常工作,但是当我将它们与另一个脚本放在一起时,我在Chrome控制台中出错:

Uncaught SyntaxError: Unexpected end of input masonry.js:16 
Uncaught TypeError: Object [object Object] has no method 'colladjust' 

可能存在某种id或类变量的冲突。或覆盖对象。

这是砌体脚本:

<script type="text/javascript">
jQuery(document).ready(function($) {
var CollManag = (function() {
    var $ctCollContainer = $('#ct-coll-container'),
    collCnt = 1,
    init = function() {
        changeColCnt();
        initEvents();
        initPlugins();
    },
    changeColCnt = function() {
        var w_w = $(window).width();
        if( w_w <= 640 ) n = 1;
        else if( w_w <= 1023 ) n = 2;
        else n = 3;
    },
    initEvents = function() {
        $(window).on( 'smartresize.CollManag', function( event ) {
            changeColCnt();
        });
    },
    initPlugins = function() {
        $ctCollContainer.imagesLoaded( function(){
            $ctCollContainer.masonry({
                itemSelector : '.ct-coll-item',
                columnWidth : function( containerWidth ) {
                    return containerWidth / n;
                },
                isAnimated : true,
                animationOptions: {
                    duration: 400
                }
            });
        });
        $ctCollContainer.colladjust();
        $ctCollContainer.find('div.ct-coll-item-multi').collslider();
    };
    return { init: init };
})();
CollManag.init();
}); 
</script>

这是一个冲突的脚本:

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

    $(document).ready(function() {
      $('.sidebarlink').click(function(){
        if ($("#content").hasClass("sidebar-active")){
          $("#content").toggleClass("sidebar-active");
          $("#content").toggleClass("sidebar-active-1600");
          $(".sidebarbox").toggleClass("sidebar-active");
          $(".sidebarlink").css( "opacity", 1 );

        }else{
          $("#content").toggleClass("sidebar-active");
          $("#content").toggleClass("sidebar-active-1600");
          $(".sidebarbox").toggleClass("sidebar-active");
          $(".commentbox").removeClass("commentbox-active");
          $("#content").removeClass("commentbox-active");
          $("#content").removeClass("commentbox-active-1600");
          $(".sidebarlink").css( "opacity", 0 );
          $(".commentbox-link").css( "opacity", 1 );
        }return false;
      });
    });
    });

1 个答案:

答案 0 :(得分:0)

你的非砌体脚本毒药的masonry.js通过定义它正在使用的变量。通过从非砌体脚本中删除单个语句直到它开始工作,找出它是哪一个。

解决方案可能就像将id和类变量名更改为其他内容一样简单。