Как бы вы завершили цепочку в jquery, затем выполнили бы свою функцию, но все в то время как внутри функции цепочки - PullRequest
0 голосов
/ 26 октября 2011

Я знаю, что это странный вопрос на словах, поэтому в основном я говорю следующее.У меня есть это:

$("#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();

<div class="hidden" id="dialog-areyousuremodal" title="Delete Confirmation">
    <p>Are you sure you want to delete this row?</p>
</div>

И я создал пользовательскую функцию, которая расширяет 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 () на новую строку.

Есть какие-нибудь мысли по этому поводу?

1 Ответ

1 голос
/ 26 октября 2011

Боюсь, вы просто не можете, когда вызывается centerFixed(), он не имеет представления о цепочке функций, которую он вызывал в конце. Все, что он знает, это this, то есть любой объект, возвращаемый функцией, вызванной в предыдущем методе цепочки.

Так как вы связываете его в конце вызова dialog(), внутри centerFixed переменная this будет любым объектом, являющимся результатом этого вызова dialog() (который я считаю объект диалога).

Если вы хотите, чтобы ваш код запускался только при создании диалогового окна, предпочтительным способом сделать это было бы использование плагина create event

...