jQuery与其他库(MooTools)冲突

时间:2013-03-09 19:03:17

标签: jquery mootools

我在实现使用jQuery的小javascript时遇到了麻烦。代码是

$(document).ready(function () {
     $("span.question").hover(function () {
         $(this).append('<div class="tooltip"><p>This is a tooltip. It is typically used to explain something to a user without taking up space on the page.</p></div>');
     }, function () {
         $("div.tooltip").remove();
     });
 });

我见过类似的帖子,据说这个问题是由mootools的javascript冲突引起的。所以我用“jQuery”替换了'$'的每个实例,但是脚本仍然没有做任何事情,并且在firebug控制台中没有显示错误。有人能告诉我问题是什么吗? 感谢。

2 个答案:

答案 0 :(得分:2)

阅读此documentation

  

许多JavaScript库使用$作为函数或变量名,就像jQuery一样。在jQuery的情况下,$只是jQuery的别名,因此所有功能都可以在不使用$的情况下使用。如果你需要在jQuery旁边使用另一个JavaScript库,那么通过调用$ .noConflict()将$的控制权返回给另一个库。在jQuery初始化期间保存$的旧引用; noConflict()只是简单地恢复它们。

因此您需要将控件移回jQuery。然后,您必须使用jQuery而不是'$'。

<script type="text/javascript">
    $.noConflict();
    jQuery(document).ready(function($) {
        jQuery("span.question").hover(function () {
            jQuery(this).append('<div class="tooltip"><p>This is a tooltip. It is typically used to explain something to a user without taking up space on the page.</p></div>');
        }, function () {
            jQuery("div.tooltip").remove();
        });
     });
</script>

注意:并确认jQuery仅包含一次。

编辑:我忘了关闭.ready功能。我修好了。这是一个fiddle链接,可以查看其工作原理。

答案 1 :(得分:0)

尝试在代码的开头写一下:

jQuery.noConflict()