Добавление jQueryui Кнопки к динамично добавленному содержанию

У меня есть список объектов, которые имеют некоторые jQueryUI кнопки, связанные с ними. После действия (удаляющий объект) я хочу перезагрузить список через ajax.

Только проблема состоит в том, когда я делаю так, кнопки JQueryUI больше не показывают, просто стандартная разметка.

Я знаю, что могу использовать jQuery.live() для того, чтобы динамично добавить обработчики щелчков и т.д., но как я применяю jQueryUI button() им?

11
задан Nick Craver 12 June 2010 в 18:28
поделиться

2 ответа

При перезагрузке через 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 для изменений различными способами.

12
ответ дан 3 December 2019 в 09:18
поделиться

Вы можете перепривязать обработчик события с помощью:

$("#mybutton").unbind().click(function(){ ..do..something... });
0
ответ дан 3 December 2019 в 09:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: