2

知道为什么这个基本示例不起作用吗?

http://jsfiddle.net/Kq6pz/

(function( $ ){

  $.fn.testPlugin = function( options ) {  
        alert('hi');
  };
})( jQuery );

$.testPlugin();
4

2 回答 2

5

因为您将插件添加到fn命名空间而不是$命名空间。所以$().testPlugin()会起作用,但$.testPlugin()不会。

如果你想污染$命名空间,你可以这样做:

(function( $ ){

  $.testPlugin = function( options ) {  
        alert('hi');
  };
})( jQuery );

$.testPlugin();

我遵循的经验法则是:$.在它与 DOM 无关时使用(如 ajax),并$.fn.在它对使用选择器抓取的元素(如 DOM/XML 元素)进行操作时使用。

于 2013-03-13T18:37:36.057 回答
1

你需要一个选择器:

$(document).testPlugin();
$(window).testPlugin();

演示:http: //jsfiddle.net/dirtyd77/Kq6pz/1/

于 2013-03-13T18:36:49.220 回答