Jquery和Mootools,.noConflict失败了

时间:2011-05-21 06:37:29

标签: javascript mootools jquery

我有一个需要使用mootools日历的应用程序,但是,我使用jquery作为我的主应用程序结构。

一旦我使用jquery进行mootools,既没有工作,当我只有一个时,他们工作正常。我做了一些调查,说我可以使用一种名为.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 个答案:

答案 0 :(得分:2)

是的,noConflict方法应该有效,但如果没有,或者你想以另一种方式进行,你应该将脚本封装在自调用函数中,并将参数设置为主要库对象:

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

之后,你应该包括下一个库(在你的情况下是MooTools)并正常编写脚本,或者 - 非常肯定 - 你也可以将MooTools逻辑封装在一个函数中。

答案 1 :(得分:1)

如果你只是打电话,你应该没事。

jQuery.noConflict();

...在包含Mootools JS文件之前。

然后,您可以使用jQuery代替$来使用jQuery函数。例如:

jQuery('.selector').hide();  // instead of $('.selector').hide();

答案 2 :(得分:0)

您还可以通过DOM-ready事件传递$

$.noConflict();

// Non-jQuery code goes here

jQuery(document).ready(function($) {
    // You can now use the dollar sign safely inside of this function
}