どのようにしてjqueryでチェーンを終了し、関数を実行しますか?

dialog jquery modal-dialog position
どのようにしてjqueryでチェーンを終了し、関数を実行しますか?

私はこれが言葉で奇妙な質問であることを知っているので、基本的に私は次のことを言っています。 私はこれを持っています:

$("#dialog-areyousuremodal").dialog({
    resizable: false,
    height: 120,
    modal: true,
    buttons: {
        "Yes": function() {
            $(this).dialog("close");
            // more stuff coming soon
            },
        "No": function() {
            $(this).dialog("close");
        }
    }
}).end().centerFixed();


    Are you sure you want to delete this row?

そして、次のようにjqueryを拡張するカスタム関数を作成しました。

(function($){
    $.fn.extend({
        centerFixed: function () {
            return this.each(function() {
            $(this).end();
            $(this).css({position:"fixed"});
            $(this).css("top", (($(window).height() - $(this).outerHeight()) / 2) + "px");
            $(this).css("left", (($(window).width() - $(this).outerWidth()) / 2) + "px");
            });
        }
    });
})(jQuery);

私の目標は、.end()。centerFixed();を置き換えることです。 .centerFixed();だけで。 ご覧のとおり、カスタム関数の中に.end()を入れてみましたが、うまくいきません。 私は、ダイアログの最後に.end()または新しい行に.centerFixed()を配置する必要を回避しようとしました。

問題についての考えはありますか?

  0  0


ベストアンサー

単に恐れることはできません。`centerFixed() `が呼び出されたときに、最後に呼び出された一連の関数の概念がありません。 知っているのは `this`だけです。これは、前のチェーンメソッドで呼び出された関数から返されるオブジェクトです。

dialog()`の呼び出しの最後にチェーンしているので、 `centerFixed`内の変数 this`は `dialog()`の呼び出しの結果であるオブジェクトになります(これはUIダイアログオブジェクト)。

ダイアログが作成されたときにのみコードが実行されるようにする場合、プラグインのhttp://jqueryui.it/demos/dialog#event-create [`create`イベント]を使用することをお勧めします

1


タイトルとURLをコピーしました