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 に答える