jQuery: Как я могу выполнить действие после выполнения .css? - PullRequest
0 голосов
/ 05 марта 2012

Так что моя проблема довольно прямолинейна, так как, по-видимому, нет обратного вызова для после выполнения .css, какие у меня есть варианты выполнения чего-либо после выполнения задачи?

Я создаюпростой лайтбокс, и мне нужно подождать, пока выравнивание по центру закончится ...

$("#img_lightbox").css("top", top);

Так что, когда это будет завершено, мне нужно все постепенно исчезать, но поскольку нет опции обратного вызова (насколько мне известно) он иногда начинает исчезать до окончания выравнивания ... как это можно предотвратить?

Любая помощь приветствуется, спасибо.

Ответы [ 3 ]

1 голос
/ 05 марта 2012

Добавление и удаление стилей CSS являются синхронными функциями - обратного вызова нет, потому что следующий оператор будет выполнен после применения стиля. Рендеринг обновленного стиля немного отличается, так как это произойдет во время следующего перерисовки, но если вы не сделаете серьезный перебор чисел в своем коде пользовательского интерфейса, разница будет совершенно незаметна. В любом случае, он будет применен до того, как «исчезновение» начнет происходить.

Если вы видите что-то не так с вашим дисплеем, я бы предположил, что проблема кроется в другом месте.

1 голос
/ 05 марта 2012

Все, что связано с вашим объектом jQuery, выполнит после перед ним функции.Самый простой способ выполнить то, что вы просите, - это Плагины .

jQuery.fn.myPlugin = function () {
    //code to execute
    return this;
}
$("#img_lightbox").css("top", top).myPlugin();

Вы даже можете написать плагин для выполнения пользовательской функции, поэтому вам не нужно создавать плагины для каждогофункция, которую вам может понадобиться запустить:

jQuery.fn.myCallback= function (callback) {
    this.each(function () {
        callback.call($(this));
    });
    return this;
}
$("#img_lightbox").css("top", top).myCallback(function () {
    // some code to run where this = $("#img_lightbox")
});

Но если я все еще неправильно понимаю, вы, возможно, захотите обратный вызов для вашей функции исчезновения: (в противном случае, пожалуйста, уточните больше)

$("#img_lightbox").fadeIn('slow', function () {
    $(this).css("top", top)
});
0 голосов
/ 05 марта 2012

jQuery предоставляет вам способ сообщить, когда документ «готов» и в правильном состоянии правильно выполнить код.Используйте одно из следующего:

$(document).ready(function(){
    //your code here
});

или более короткое,

$(function(){
    //your code here
});

Более подробная информация на http://api.jquery.com/ready/

...