为什么简单的fn.extend不起作用?

6

我相信这是一件简单的事情,但是我错过了 - 为什么在<script>标签内的以下内容不起作用并弹出警告?

jQuery.fn.extend({
    sayHi: function () {
        alert('hello!');
    }
});

$(document).ready(function () {
    jQuery.sayHi();
});

如果您想使用jQuery引用作为静态方法来调用它,应该使用jQuery.extend({ sayHi:function(){ alert('hello!'); } });,如果您想将其用作插件方法,请使用jQuery.fn.extend - Arun P Johny
1个回答

8
因为你设置了 jQuery.fn.sayHi,而不是 jQuery.sayHi(后者为 undefined,因此会导致运行时错误)。
你在 jQuery.fn 上设置的方法只能在选择器(jQuery对象)上使用,而不能在 jQuery 函数上使用。 jQuery('body').sayHi(); 可以正常工作。
有关插件开发的更多信息,请参见 http://learn.jquery.com/plugins/basic-plugin-creation/

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接