2012-02-21 27 views
2

它已被建議我以下結構是首選/標準公開的屬性從jQuery插件。從一個jQuery插件暴露屬性附加到頁面上的多個元素

(function($) { 
    $.myPlugin = { 
     data: {} 
    }; 

    $.fn.myPlugin = function() { 
     return this; 
    }; 
})(jQuery); 

上面的例子通過語法$.myPlugin.data.

暴露「數據」如果插件附接至頁面上的多個HTML元素,那麼我認爲$ .myPlugin.data變得無效,因爲它是等效的一個靜態變量。

  1. 什麼是寫入插件的另一種方式,所以.data與特定插件的實例有關?
  2. 如何通過插件的外部代碼引用此屬性?即。你如何閱讀房產?
+0

你可以看看大多數jQuery UI小部件是如何實現的。他們通常接受三個參數,例如'.myPlugin('option',key [,value]))'來獲取或設置選項。 – 2012-02-21 11:11:33

回答

1

這會將數據附加到插件操作的每個元素上。

(function($) { 
    $.fn.extend({ 
     myPlugin: function (options) { 
      var defaultConfig = {data: {}}; 
      return this.each(function() { 
       $(this).data(
        "myPlugin", $.extend(defaultConfig, options) 
       ); 
      }); 
     } 
    }); 
})(jQuery); 

例如,當這樣調用:

$("div.foo").myPlugin({option: "value"}); 

每個<div class="foo">將有自己的

{ 
    data: {}, 
    option: "value" 
} 

可複製的$(this).data("myPlugin")

0

使用回調函數怎麼樣?

// external code 
$('.something').myPlugin({ 
    onLoad : function(object, data) { 
     // use data here 
    } 
});