Jquery и Mootools, .noConflict не удается - PullRequest
0 голосов
/ 21 мая 2011

У меня есть приложение, которое требует использования календаря mootools, однако я использую jquery для своей основной структуры приложения.

Как только у меня есть mootools с jquery, они не работают, и когда у меня естьтолько один, они работают нормально.Я провел некоторое исследование, сказав, что могу использовать метод с именем .noconflict, и хотя я пытался, я не получил его, чтобы решить мою проблему.Возможно, кто-то мог бы лучше объяснить мне, где делать реальные вызовы .noconflict, и, возможно, помочь мне заставить это работать.

Спасибо!

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js" type="text/javascript"></script>
    <script type="text/javascript">
        var fixHeight = function () {
                var gutter = 50;
                var newHeight = $(window).height() - (gutter*2);
                $('#container').height(newHeight);
        }
        $(function(){ 

            fixHeight();
            $('ul#nav li.item').each(function(index) {
                if ($(this).attr("name") == "media") {
                    $(this).attr("id","active");
                }
            });
            $('input').focus(function() {
                $(this).attr("value","");
            }).blur(function() {
                $(this).attr("value",$(this).attr("original-value"));
            });

            $(window).resize(function() {
                fixHeight();
            }).load(function() {
                fixHeight();
            });

        });  
     </script>
     <script type="text/javascript" src="http://taptouchclick.com/js/mootools-1.2.4-core-yc.js"></script>
     <script type="text/javascript">
        window.addEvent('domready', function(){
             var smoothCalendar = new SmoothCalendar("calendar");
        });
    </script>

Ответы [ 3 ]

2 голосов
/ 21 мая 2011

да, метод noConflict должен работать, но если он не работает или если вы хотите сделать это по-другому, вы должны инкапсулировать скрипты в функции с самообращением, с параметром, установленным в качестве основного объекта библиотеки:

(function($){
    // al your jquery logic here
    alert($ instanceof jQuery);
})(jQuery)

после этого вы должны включить следующую библиотеку (в вашем случае MooTools) и написать скрипт как обычно, или - чтобы быть уверенным - вы также можете инкапсулировать логику MooTools в функцию.

1 голос
/ 21 мая 2011

Вам будет хорошо, если вы просто позвоните:

jQuery.noConflict();

... перед включением файла Mootools JS.

Затем вы можете использовать функции jQuery, используя jQuery вместо$.Пример:

jQuery('.selector').hide();  // instead of $('.selector').hide();
0 голосов
/ 24 мая 2011

Вы также можете передать $ обратно через событие DOM-ready:

$.noConflict();

// Non-jQuery code goes here

jQuery(document).ready(function($) {
    // You can now use the dollar sign safely inside of this function
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...