2010-09-17 76 views
0

我下面的教程在這裏:http://docs.jquery.com/Plugins/AuthoringjQuery插件需要調用本身

我只是想爲我們正在就這一工作將增加+/-標誌一個項目一個簡單的插件旁邊的一個輸入框可用於增加框的值。

因此,我正在閱讀教程,並講述如何使用多種方法,並且一切都很順利,除了一個小問題。

所以這裏是代碼:

(function($) { 
    var methods = { 
     init: function(options) { 
      if (options) { 
       $.extend(settings, options); 
      } 

      this.css('float', 'left'); 
      this.after('<div class="increment-buttonset"><div class="increment-button" style="float: left;">+</div><div class="decrement-button">-</div></div><br style="clear: both" />'); 
      $('.increment-button').click(function() { 
       $.increment('change'); 
      }); 
      return this; 
     }, 
     change: function() { 
      // Increment Decrement code would go here obviously 
      return this; 
     } 
    }; 

    $.fn.increment = function(method) { 
     var settings = { 
      'step': 1 
     }; 

     if (methods[method]) { 
      return methods[method].apply(this, Array.prototype.slice.call(arguments, 1)); 
     } else if (typeof method === 'object' || !method) { 
      return methods.init.apply(this, arguments); 
     } 
    }; 
})(jQuery); 

的問題是$ .increment( '變');

我想綁定點擊+/-按鈕來調用增量('更改')。我這樣做的時候會出錯。

Uncaught TypeError: Object function (a,b){return new c.fn.init(a,b)} has no method 'increment' 

我試過它沒有$。但這只是告訴我增量尚未定義。我是否在這裏搞亂了一些語法,或者只是想說這個完全錯誤?

回答

0

解決方法非常簡單,你調用的方法是錯誤的。它應該是

$('.increment-button').click(function() { 
    $(this).increment('change'); 
}); 

也就是說,由於功能加入到$ .fn.functionName只能在一個jQuery元素,如$(選擇).functionName調用。

+0

所以我是。簡單的答案,謝謝你的收穫。我會在4分鐘內給你信貸,當它讓我:) – 2010-09-17 18:02:05