0

我正在编写我的第一个 jQuery 插件。我正在尝试添加悬停动作,但会立即调用悬停响应。这是我的插件:

(function($){
  var Help = function(element, options) {
    this.$element = element;
    this.options = $.extend({}, $.fn.help.defaults, options);
  };

  Help.prototype.hover = function(name){
    alert(name);
  };

  $.fn.help = function(option){
    return this.each(function () {
      var $this = $(this);
      var help = $this.data('help');
      var options = "";
      var data = $this.data('help-id');
      if(!help) {
        $this.data('help', (help = new Help(this, options)));
      }
      $this.on('hover', help.hover(data));
    });
  };
})(jQuery);

我附加了我的插件$('#one').help(),但这会立即调用悬停功能。我究竟做错了什么?

4

1 回答 1

5

您不是将函数传递给函数,on而是函数调用的结果。

代替

$this.on('hover', help.hover(data));

$this.on('hover', function(){help.hover(data)});
于 2012-12-13T20:47:24.210 回答