如何调试jQuery/JavaScript冲突? [英] How to debug a jQuery / JavaScript conflict?

查看:78
本文介绍了如何调试jQuery/JavaScript冲突?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的aspx页面中有两个WebUsercontrols(.ascx).一种用于幻灯片放映,另一种用于FullCalendar.两者在单独运行时都可以正常工作,但是当我在同一页面中同时运行两个用户控件时,会发生冲突错误,如下所示:

I have two WebUsercontrols(.ascx) in my aspx page. One is for slide show and another one is for FullCalendar. Both are working fine while running Separately, but when I run both User controls in same page script conflict error occurs, as follows:

错误描述是:

脚本为:

SlideShow.ascx

<script type="text/javascript" src="../Scripts/jquery-1.4.1.js"></script>
<script type="text/javascript">
    function pageLoad(sender, args) {

        var $slides = $('.slide'),
         slideWidth = $slides.width(),
         numberOfSlides = $slides.length,
         speed = 5000,
         $holder = $slides.wrapAll('<div id="slidesHolder"></div>').css('float', 'left').parent().width(slideWidth * numberOfSlides);

        setInterval(changePosition, speed);

        function changePosition() {
            $holder.animate({
                'marginLeft': 0 - slideWidth
            }, function () {
                $holder.css('marginLeft', 0).children().first().appendTo($holder);
            });
        }

    }
</script>

FullCalendar.ascx

<script src="http://code.jquery.com/jquery-1.3.2.js" type="text/javascript"></script>
<script src="../Scripts/jquery-ui-1.7.3.custom.min.js" type="text/javascript"></script>
<script src="../Styles/fullcalendar.min.js" type="text/javascript"></script>
<script src="../Scripts/calendarscript.js" type="text/javascript"></script>

我尝试了noConflict.如果我使用noConflict脚本之一不起作用.

I have tried for noConflict. If i use noConflict one of the script is not working.

推荐答案

<script type="text/javascript" src="../Scripts/jquery-1.4.1.js"></script>

在包含jQuery之后,您应该调用$ .noConflict().这将从全局名称空间中删除"$":

After including jQuery, you should call $.noConflict(). This will remove the "$" from the global namespace:

<script language="javascript">
    var $j = jQuery.noConflict();
</script>

这时,如果要调用jQuery代码,则应使用$ j而不是$.或者,您可以通过将$符号包装在闭包中来达到目的

At this point, you should use $j instead of $ if you want to call jQuery code. Or you could use a trick by wrapping the $ symbol in a closure

<script type="text/javascript">
    function pageLoad(sender, args) {

        var $jslides = $j('.slide'),
         slideWidth = $jslides.width(),
         numberOfSlides = $jslides.length,
         speed = 5000,
         $jholder = $jslides.wrapAll('<div id="slidesHolder"></div>').css('float', 'left').parent().width(slideWidth * numberOfSlides);

        setInterval(changePosition, speed);

        function changePosition() {
            $jholder.animate({
                'marginLeft': 0 - slideWidth
            }, function () {
                $jholder.css('marginLeft', 0).children().first().appendTo($jholder);
            });
        }

    }
</script>

希望这会有所帮助.. !!

Hope this helps..!!

快乐编码:)

这篇关于如何调试jQuery/JavaScript冲突?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆