2

プラグインの外部から、次のプラグインの「defaults」オブジェクトの「extraParams」プロパティに値を割り当てるにはどうすればよいですか?

(function ($) {
jQuery.fn.jScroller = function (store, parameters) {
    var defaults = {
        //numberOfRowsToRetrieve: 10,
        onSuccessCallback: function (row, container) { },
        onErrorCallback: function (thrownError) { window.alert('An error occurred while trying to retrive data from store'); },
        onTimeOutCallback: function () { },
        timeOut: 3 * 1000,
        autoIncreaseTimeOut: 1000,
        retryOnTimeOut: false,
        loadingButtonText: 'Loading...',
        loadMoreButtonText: 'Load more',
        fullListText: 'There is no more items to show',
        routValues: null

これを試しましたが、エラーが発生します:

$.jScroller.defaults.extraParams = val;
4

2 に答える 2

2

これが2つの非常に単純なプラグインです。どちらにもデフォルトは設定されていませんが、どちらも渡されたオプションに応答します。1つは$.fn.plugin.defaultsデフォルトを設定するために使用し、もう1つは開始時にローカルvarを使用します。ある程度、デフォルトを設定する方法に関するプラグインの複雑さとともに、個人的な好みの問題です。

オプションはプラグイン#2で2つの異なる方法で外部的に設定されていることに注意してください

デモ:http://jsfiddle.net/fCbm8/1

(function($) {
    $.fn.plugin_1 = function(options) {
        var defaults = {}; /* merge the options into defaults*/
        var opts = $.extend({}, defaults, options);

        return this.each(function() {
            if (opts.green) {
                $(this).css('background', 'green')
            }
        });
    }
})(jQuery);
(function($) {
    $.fn.plugin_2 = function(options) { /* merge the options into defaults*/
        var opts = $.extend({}, $.fn.plugin_2.defaults, options);

        return this.each(function() {
            if (opts.big) {
                $(this).css('font-size', '30px')
            }
            if (opts.color) {
                $(this).css('color', 'white')
            }
        });
    }

    $.fn.plugin_2.defaults = {};

})(jQuery)


$(function() {
    $.fn.plugin_2.defaults.big = true;
    $('div').plugin_2({color:true}).plugin_1({green: true  })

})
于 2012-06-20T14:29:27.820 に答える
1

マニュアルから:

多くのオプションを提供するより複雑でカスタマイズ可能なプラグインの$.extend場合、プラグインが呼び出されたときに拡張できる(を使用して)デフォルト設定を設定することをお勧めします。したがって、多数の引数を使用してプラグインを呼び出す代わりに、オーバーライドする設定のオブジェクトリテラルである1つの引数を使用してプラグインを呼び出すことができます。

  $.fn.tooltip = function( options ) {  

    // Create some defaults, extending them with any options that were provided
    var settings = $.extend( {
      'location'         : 'top',
      'background-color' : 'blue'
    }, options);

    return this.each(function() {        

      // Tooltip plugin code here

    });

  };
})( jQuery );

この例では、マニュアルは、追加のパラメーターを渡してプラグインを呼び出す方法を示しています。必要に応じて、デフォルトのパラメーターをオーバーライドします(のように{location: left})。

于 2012-06-20T14:10:17.103 に答える