0

最近、コマンドを呼び出すたび.fadeIn()に呼び出すことなく、コマンドをイベントにバインドする方法について質問しました。この投稿.trigger('fadeIn')で、私は非常に良い解決策を得ました。

.hide()ただし、次のようなイベントに対して同じ手順を実行しようとしました。

var _old = $.fn.hide;
$.fn.hide = function(){
    var self = this;
    _old.apply(this,arguments).promise().done(function(){
        self.trigger("hide");
    });
};

このjsfiddleに示されているように、一般的には機能しているようです:http: //jsfiddle.net/gEVsX/5/

しかし、これをスクリプトに追加すると、一見無関係な場所からエラーが発生します。これは、スクリプトのこのセクションからスローされています。

    $('#unique_div_id').dialog({
        autoOpen: false,
        show: "blind",
        hide: "explode",
        modal: true,
        buttons: {
            Cancel: function(){
                $(this).dialog("close");
            }
        }
    });

これは、divをモーダルダイアログに初期化するだけです。jQueryの非表示コードを台無しにしたため、このエラーが発生していると思います。このエラーが発生します:

Uncaught TypeError:未定義のメソッド'addClass'を呼び出すことができません

このjsfiddleのエラーを複製しました:http://jsfiddle.net/gEVsX/6/

.hide()関数ラッパースクリプトを修正する方法を知っている人はいますか?

どうもありがとう!

4

1 に答える 1

2

hide()チェーン可能であることがサポートされているメソッドのコントラクトを破りました。

return this;あなたはあなたの新しいからする必要がありますhide()

于 2012-05-07T16:12:48.450 に答える