2012-07-20 45 views
1

比方說,這是插件的初始化:如何在另一種方法中使用jQuery插件init選項?

 $(document).ready(function() { 
      $("#tree").fname({ 
       animSpeed: 0 
      }); 
     }); 

現在,我想調用另一個方法,並仍然保持這種animSpeed值:

$('#tree').fname('expand'); 

然而,我當前的代碼,該animSpeed值會丟失,並且在擴展方法調用中使用默認值(它在init中工作)。我怎麼能改變這個?

目前代碼:

;(function($){ 

    $.fn.fname = function(method) { 

     var defaults = { 
      animSpeed   : 'fast' 
     }; 
     var option = {}; 

     var methods = { 

      init: function(options) { 

       option = $.extend(defaults, options); 

       return this.each(function() { 
        code... 
       }); 
      }, 

      expand: function() { 
       return this.each(function() { 
        $(this).children('li').slideDown(option.animSpeed); 
       }); 
      } 
     }; 
    }; 
}(jQuery)); 

回答

4

您應該存儲在元素的data原來的選項時,它正在呼籲:

return this.each(function() { 
    $(this).data('fname-options', options); 
    // Code... 
}); 

,以便以後可以從其他方法來訪問它:

expand: function() { 
    return this.each(function() { 
     var $this = $(this), 
      options = $this.data('fname-options'); 

     $this.children('li').slideDown(options.animSpeed); 
    }); 
} 
+0

謝謝,完美的作品。我從來沒有使用過.data()。似乎是一個非常有用的功能,我必須添加到我的武庫。 – Chris 2012-07-20 03:27:50

相關問題