为什么我必须使用jQuery定义而不是$?

时间:2010-07-22 19:01:58

标签: jquery plugins simplemodal

我是jQuery的新手......

我在我的页面中使用了一个jQuery插件(Actually SimpleModal Plugin)。直到我用jQuery替换$之后它才起作用!

$(document).ready(function() {    -->    jQuery(document).ready(function() {

现在正在运作,但我还是有问题!我想点击页面上的取消按钮关闭这个模态窗口。 在SimpleModal手册中已经说过:“你可以通过调用$ .modal.close()来以编程方式关闭当前打开的对话框;”但它对我不起作用。我用“jQuery”替换了“$”但是没有用。

我想知道为什么我必须使用jQuery定义?!在这种情况下我必须做些什么?!

P.S。 单击按钮时,此代码正常工作:

<script type="text/javascript" language="javascript">
    jQuery(document).ready(function() {
        jQuery('#cancelID').click(function() {
            alert ("test");
        });
    });
</script>

此代码没有采取适当的措施:

<script type="text/javascript" language="javascript">
    jQuery(document).ready(function() {
        jQuery('#cancelID').click(function() {
            $.modal.close();
        });
    });
</script>

感谢您的时间并帮助他人。

3 个答案:

答案 0 :(得分:3)

在这种情况下,您仍然将其称为jQuery对象上的属性,如下所示:

jQuery(document).ready(function() {
    jQuery('#cancelID').click(function() {
        jQuery.modal.close();
    });
});

或者在$函数中使用ready(它作为第一个参数传递),如下所示:

jQuery(function($) {
    $('#cancelID').click(function() {
        $.modal.close();
    });
});

至于为什么$不起作用?在代码中查看jQuery.noConflict()$.noConflict()。此函数释放$的控制权,因此它不再与jQuery相同,通常这是其他库可以控制它,例如Prototype。

答案 1 :(得分:1)

您应该知道以下内容:

  1. jQuery仅定义一个全局(文档/窗口级别)变量: $
  2. 其他库可能正在使用$全局变量(示例:原型)
  3. 因此,如果您正在使用另一个JS库以及 jQuery,那么jQuery可以通过提供noConflict函数来很好地播放它。此函数基本上会将$的值重新分配给其他库,而是使用jQuery关键字。
  4. jQuery插件已使用jQuery关键字,假设您可能正在使用其他库。

答案 2 :(得分:0)

我发现一个可能有用的技巧是,你可以使用

包围$ -using jQuery代码
(function($){

...

})(jQuery)

所有$符号将再次起作用,无需单独更改为“jQuery”。