Добавление кнопок jQueryui к динамически добавляемому контенту - PullRequest
11 голосов
/ 12 июня 2010

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

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

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

Ответы [ 2 ]

12 голосов
/ 12 июня 2010

Когда вы перезагружаете через 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 различными способами.

0 голосов
/ 12 июня 2010

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

$("#mybutton").unbind().click(function(){ ..do..something... });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...