3

jQueryプラグインを作成しましたが、プラグインの外部でプラグインの1つの関数を使用する必要があります。

プラグイン

(function ($) {
    jQuery.fn.vierGewinnt = function () {
 var VierGewinnt = function (config) {
            this.view = config.view;    
            this.dx;
            this.turn = 1;
        }
VierGewinnt.prototype.setToken = function (column) {
            for (var i = this.rows; i > 0; i--) {
                if (this.gamearray[column][i] == 0) {
                    this.gamearray[column][i] = "red";    
                    this.turn++;
                    this.findWinner(column, i);
                    break;
                }
            }

        }})(jQuery);

私が試したmain.js:

$.setToken()
$.fn.vierGewinnt.setToken()
$.fn.vierGewinnt.VierGewinnt.setToken()

多分誰かが手がかりを持っています!事前にThx!

4

3 に答える 3

9

あなたがする必要があるのは、関数/プラグインクロージャを返し、クロージャ($ this)のプロパティとしてプラグインの外部で制御したいメソッドを作成することです。

    $ .fn.vierGewinnt = function(options){

        var $ this = this;

        $ this.setToken = function(){
            //トークンを設定します
        };

        $thisを返します。
    };

次に、プラグインへの参照を保存して、後でメソッドを呼び出します。

    var vierPlugin = $('。some-element')。vierGewinnt();
    vierPlugin.setToken(); //プラグインの外部にトークンを設定します

于 2014-01-14T18:48:50.227 に答える
4

あなたがそれをしたように、あなたはそれを外から呼ぶことはできません。

js/jqueryウィジェットを作成する方法にはいくつかのパターンがあります。

「通常の」プロトタイプをjQueryと組み合わせようとしています。

私が見るように、あなたには2つの選択肢があります。

  1. jQueryメソッドをラップして、コンストラクターのインスタンスを返します。その上でプロトタイプメソッドを呼び出すことができます。何かのようなもの:

    $.fn.vierGewinnt = function(config){ 
        return new VierGewinnt (config); 
    };
    

    次に、プラグインをインスタンス化してメソッドを呼び出すことができます

    var plugin = $('#someSelector').vierGewinnt();
    plugin.setToken(column);
    

    この場合、ほとんどすべてのコードが(function ($)ブロックの外に出る可能性があります。jQueryをラッパーとして使用しているだけで、それ以外はすべて通常のjavascriptです。私が見る限り、プラグインはどのDOM要素でも呼び出されていません。その場合、jQueryプラグインにはあまり意味がありません...それは純粋なjavascriptです。その場合は、例からすべてのjQueryを失うだけで、機能します。

  2. 別のプラグインパターンを使用してください。個人的にはjQueryUIウィジェットファクトリアプローチが好きですが、それにはjQueryUIを含める必要があります。ドキュメント

于 2013-01-02T22:02:49.440 に答える
0

注:パブリックセッター関数が「$ this」を返すようにするには、次のようにします。

this.setToken1 = function() {
  // setting token
  return $this;
};

this.setToken2 = function() {
  // setting token
  return $this;
};

jQueryスタイルのチェーンを使用できます。

vierPlugin.setToken1().setToken2();
于 2016-09-12T12:26:17.550 に答える