У меня есть список объектов, которые имеют некоторые jQueryUI кнопки, связанные с ними. После действия (удаляющий объект) я хочу перезагрузить список через ajax.
Только проблема состоит в том, когда я делаю так, кнопки JQueryUI больше не показывают, просто стандартная разметка.
Я знаю, что могу использовать jQuery.live()
для того, чтобы динамично добавить обработчики щелчков и т.д., но как я применяю jQueryUI button()
им?
При перезагрузке через ajax вызывайте . button()
(или любой другой вариант, который вы используете) в этом контексте, например так:
$.ajax({
//other options..
success: function(data) {
//insert elements
$(".button", data).button();
}
});
Это запустит .button()
на элементах только в ответе (не на других, которые уже есть в странице/DOM в другом месте) с class="button"
.
Вы не можете использовать .live()
или что-то подобное здесь, это полагается на всплеск событий, а не на добавление/удаление элементов... когда дело доходит до плагинов, вам нужно выполнить их снова против новых элементов, которые вы добавляете. Или, менее эффективный, но более универсальный подход - .livequery()
плагин, используемый следующим образом:
$(".button").livequery(function() {
$(this).button();
});
Как я уже сказал, это не самая эффективная вещь в мире, поскольку он фактически отслеживает DOM для изменений различными способами.
Вы можете перепривязать обработчик события с помощью:
$("#mybutton").unbind().click(function(){ ..do..something... });