Как отладить конфликт jQuery / JavaScript?

0

У меня есть два WebUsercontrols (.ascx) на моей странице aspx. Один для слайд-шоу, а другой для FullCalendar. Оба работают нормально, работая отдельно, но когда я запускаю оба пользовательских элемента управления в одной и той же странице скрипта сценария возникает ошибка, как показано ниже:

Изображение 174551

Описание ошибки:

Изображение 174551

Скрипт это:

SlideShow.ascx

<script type="text/javascript" src="/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="/jquery-1.3.2.js" type="text/javascript"></script>
<script src="/jquery-ui-1.7.3.custom.min.js" type="text/javascript"></script>
<script src="/fullcalendar.min.js" type="text/javascript"></script>
<script src="/calendarscript.js" type="text/javascript"></script>

Я пытался для noConflict. Если я использую noConflict один из сценариев не работает.

  • 0
    Вы не должны включать две версии JQuery в первую очередь
  • 0
    @AmitJoki первое место в смысле?

2 ответа

2
Лучший ответ
<script type="text/javascript" src="/jquery-1.4.1.js"></script>

После включения jQuery вы должны вызвать $.noConflict(). Это приведет к удалению "$" из глобального пространства имен:

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

На этом этапе вам нужно использовать $ j вместо $, если вы хотите вызвать код jQuery. Или вы можете использовать трюк, обернув символ $ в закрытии

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

Надеюсь это поможет..!!

Счастливое кодирование :)

  • 1
    Работает нормально ...
2

Попробуйте запустить после удаления: /jquery-1.4.1.js

Если он работает, тогда все в порядке

Попытайтесь положить это внизу своей страницы

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

используйте <script>jQuery.noConflict();</script> и замените слово jquery $

  • 0
    я пробовал первый метод, не работает .. внизу страницы ??? я не могу получить тебя ..
  • 0
    Поместите внизу страницы этот скрипт над тегом </ body>.
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню