1

私は手がかりのjQueryプラグインを使用しています。

独自の閉じるボタンを追加しようとしています。私が呼び出そうとしているjqueryは次のとおりです。

 $(document).bind('hideCluetip', function(e) {
  cluetipClose();
});

コードを通じてcluetipClose()への多くの参照があり、jqueryが挿入するボタンはそれを使用して機能するため、私が知る限り、その機能は正常に機能します。

私はそれをトリガーしようとしています

$('a.close-cluetip').trigger('hideCluetip');

リンクを作成しました:

<a href="#" class="close-cluetip">Close</a>

しかし、それは何もしていません。

私はそれを間違って呼んでいますか?

4

1 に答える 1

1

ここでの問題は、cluetip プラグインでは、関数clueTipClose()がクロージャーの中にあるため、クロージャーの内側 (つまり、プラグインのコードの内側) にいない限り、関数にアクセスできないことです。認めざるを得ないのですが、このプラグインはそれほど拡張可能に設定されていないようです。この関数を使用する要素ごとに設定された「clueTip」オブジェクトを介してこの関数にアクセスできるようにすると、次のようにクロージャの最後に別の jQuery メソッドを追加できます。

$.fn.cluetipClose = function() {
    return this.each(function() {
        var thisCluetip = findCluetipObj(this);

        if (thisCluetip)
            thisCluetip.cluetipClose();
    });
};

しかし、これを簡単に行うことができないという不幸な運があります。この男は、クロージャー内にオブジェクト指向でないコードを含む jQuery プラグインを作成したようです。かわいそう。

プラス面として、このプラグインは、cluetipClose()関数をインスタンス化した直後にこのコードをすでに実行しているようです。コードからこれを試してみましたか:

$('a.close-cluetip').trigger('hideCluetip');

ドキュメントhideCluetipバインドを再宣言せずに? おそらくうまくいくはずだと思います。

于 2011-02-09T17:29:39.923 に答える