1

在我的自定义插件中添加此 $(document).click 事件的正确位置在哪里?

(function ( $ ) {

    $.fn.greenify = function( options ) {



       $(document).click(function (event) {  // where do I add this?


         alert('this id was clicked');

       });




        // This is the easiest way to have default options.
        var settings = $.extend({
            // These are the defaults.
            color: "#556b2f",
            backgroundColor: "white"
        }, options );

        // Greenify the collection based on the settings variable.
        return this.css({
            color: settings.color,
            backgroundColor: settings.backgroundColor
        });

    };

}( jQuery ));



$('#a,#b,#c').greenify({
        // My settings goes here
    });
4

2 回答 2

1

如果您不关心是否$(selector).greenify()已被调用,您可以将其与插件声明一起放入:

;(function($){
  $(function(){
    $(document).click(function(){
      alert('hello, world! (from greenify)');
    });
  });
  $.fn.extend({
    greenify: function(opts){
      // continue with plugin
    }
  });
})(jQuery);

请记住,无论是否.greenify使用,此单击事件都是绑定和侦听的。

如果您希望仅在.greenify使用时完成,您可以执行以下操作:

;(function($){
  var greenifyClick = false;
  $.fn.extend({
    greenify: function(opts){
      if (!greenifyClick){
        greenifyClick = $(document).click(function(){
          alert('hello, world! (from greenify)');
        });
      }
      // continue with plugin
    }
  });
})(jQuery);

如果/何时使用,这将使它绑定.greenify,但只有一次。

于 2013-10-11T11:22:33.163 回答
0

你攻击这个是错误的。插件本身不应等待文档加载。

在您的脚本(不是插件)中,您已准备好文档并在您喜欢时调用插件。始终让用户决定。插件本身应该尽可能流畅,并且在用户需要时可以调用。

插入

(function ( $ ) {
    $.fn.greenify = function( options ) {
        // This is the easiest way to have default options.
        var settings = $.extend({
            // These are the defaults.
            color: "#556b2f",
            backgroundColor: "white"
        }, options );

        // Greenify the collection based on the settings variable.
        return this.css({
            color: settings.color,
            backgroundColor: settings.backgroundColor
        });
    };
}( jQuery ));

主 js 文件

$(document).click(function () {
    $(elm).greenify({
        // My settings goes here
    });
});
于 2013-10-11T11:19:16.693 回答