Извините, но, видимо, я не понимаю, цепочки достаточно, чтобы понять эту проблему ...JQuery, кажется, работает несколько вызовов одновременно
Я реализует карусельного плагин JQuery (jCarouselLite), и я пытаюсь добавить опцию «удалить» один из пунктов карусельных (в настоящее время <div class="remove">
) ...
initEvents: function() {
var self = this;
// Bind jQuery event for REMOVE button click
$('.remove').live('click', function() {
// Need to save the ID that we're removing
var item = $(this).closest('li.sort');
var itemId = item.attr("id");
$(this).removeItem();
self.refreshDisplay(itemId);
});
$.fn.removeItem = (function() {
var item = this.closest('li.sort'); // could save this call by passing param
item.fadeOut("normal", function() {
$(this).remove();
});
// preserve jQuery chain
return this;
});
},
refreshDisplay(itemId) {
// ...
// redraws carousel
// ...
// itemId is used to remove from the array of Items to show (class-wide scope)
}
Поскольку нет чистого способа «обновлений» плагин jCarouselLite (возможно, что-то я попробовать реализовать в фактическом плагин позже) быстрое и грязное исправление для этого - просто восстановить карусель.
Проблема заключается в том, что я пытаюсь угаснуть элемент, нажав, однако, кажется, что refreshDisplay() вызывается до того, как анимация затухания (и удаления) завершена. Я проверил это, комментируя строку self.refreshDisplay(itemId);
, и она исчезает и удаляется, как ожидалось.
Итак, я уверен, что мне нужно связать это? Я проделал пару часов чтения о том, как цепочки работают, и я думал, что понял это, но, видимо, нет.
Любая помощь приветствуется, спасибо!
Ударьте меня! +1, Джейкоб полностью прав ;-) Также обратите внимание - это не «jQuery», который вызывает вещи одновременно, его javascript вообще. Помните, что замирание - это анимация, и анимация обрабатывается, я полагаю, с использованием тайм-аутов (ожидание небольшого количества времени, а затем продолжение анимации). Пока тайм-ауты продолжаются, ваш механизм javascript с удовольствием продолжит выполнение любых дополнительных команд, которые вы написали. Команда jQuery знает об этом, и именно поэтому большинство их функций анимации выполняют дополнительные функции обратного вызова. – Pandincus 2010-12-03 19:45:11