0

要素にバインドした後に記述したカスタム関数を操作する方法を見つけるのに苦労しています。例えば私は関数を持っています

jQuery.fn.myPlugin = function(opts) {
    this.someFunction = function() { };

    $(this).keypress(function() {
        // do something
        someFunction();
    });
};

$('#some-element').myPlugin({ someOption: 'option'});

私がやりたいことは、プラグインが設定された後にオプションの関数 (someFunction) を設定することです。したがって、次のようなものです

$('#some-element').myPlugin("someFunction", function() { 
    // do something
});

myPlugin でより多くのパラメーターが必要になることはわかっており、それが最初の呼び出し (opts を使用) であるか、初期化後に何かが変更されているかどうかを確認します。しかし、これを行う方法がよくわかりません。

4

2 に答える 2

1

jQuery ドキュメントのPlugins/Authoringページを読んでください。

このプラグイン開発パターンを使用できます (プラグイン メソッドのセクションを参照)。

(function( $ ){

  var methods = {
    init : function( options ) { 
      // THIS 
    },
    show : function( ) {
      // IS
    },
    hide : function( ) { 
      // GOOD
    },
    update : function( content ) { 
      // !!! 
    }
  };

  $.fn.tooltip = function( method ) {

    // Method calling logic
    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 );
    } else {
      $.error( 'Method ' +  method + ' does not exist on jQuery.tooltip' );
    }    

  };

})( jQuery ); 
于 2013-04-06T13:18:07.087 に答える
1

jqueryui widget factory の使用を検討しましたか? これには、カスタム メソッドとイベントだけでなく、作成後のオプションの変更もサポートされています。

http://wiki.jqueryui.com/w/page/12138135/Widget%20factory

于 2013-04-06T12:34:35.673 に答える