Конфликт JQuery и MooTools - один скрипт работает, другой нет - PullRequest
0 голосов
/ 18 июля 2011

Хорошо, я использую mootools для отображения флэш-контента через карты Google, и я усердно работаю, чтобы заставить его работать должным образом, поэтому у меня мало шансов переключить его на 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 в animateтекущее меню, и я не могу заставить его работать.Я пытался применить 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 Ответ

2 голосов
/ 18 июля 2011

Отформатируйте код таким образом, и не нужно использовать noConflict(). Вызовите jQuery.noConflict(); сразу после загрузки библиотеки jQuery и MooTools.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...