jquery和mootools冲突 - 一个脚本工作,另一个不工作

时间:2011-07-18 13:35:07

标签: javascript jquery mootools

好的,我使用mootools通过谷歌地图显示Flash内容,我努力使其正常工作,因此几乎没有机会将其切换到jQuery。另一方面,我认为jQuery对其他所有东西都更有用,所以我试图让它一起工作。这是为了解释。现在这是代码。

我使用这个jQuery脚本来显示/隐藏动画,它可以完美地与mootools一起使用

<script type="text/javascript">
jQuery(document).ready(function() {
 // hides the slickbox as soon as the DOM is ready
 jQuery('#slickbox').hide();
 // toggles the slickbox on clicking the noted link  
  jQuery('#slick-toggle').click(function() {
    jQuery('#slickbox').toggle(400);
    return false;
  });
});

最近,我添加了scrit来动画流动的菜单,我无法让它工作。我试图应用noConflict,但它没有用。这是代码:

<script language="text/javascript">
var $j = jQuery.noConflict();
var name = "#floatMenu";
var menuYloc = null;
    $j(document).ready(function(){
        menuYloc = parseInt($j(name).css("top").substring(0,$j(name).css("top").indexOf("px")))
        $j(window).scroll(function () { 
            offset = menuYloc+$(document).scrollTop()+"px";
            $j(name).animate({top:offset},{duration:500,queue:false});
        });
    }); 
 </script>

错误消息是Uncaught TypeError:对象#没有方法'dispose' 非常感谢你。

1 个答案:

答案 0 :(得分:2)

以这种方式设置代码格式,并且无需使用noConflict()在加载jQuery和MooTools库之后立即调用jQuery.noConflict();

<script type="text/javascript">
(function($){
    var name = "#floatMenu",
        menuYloc = null;
    $(document).ready(function(){
        menuYloc = parseInt($(name).css("top").substring(0,$(name).css("top").indexOf("px")))
        $(window).scroll(function () { 
            var offset = menuYloc+$(document).scrollTop()+"px";
            $(name).animate({top:offset},{duration:500,queue:false});
        });
    });
})(jQuery);
</script>

这会将您的代码封装到一个函数中,该函数将传递给jQuery对象。在该函数中使用$的任何地方,它都会引用jQuery

此外,没有属性language的值"text/javascript",它是type属性,应具有该值。不要再使用language属性。