Я хочу активировать jQueryUI виджет кнопки на данном селекторе, позволяет, говорят '.button'.
Что лучший способ состоит в том, чтобы автоматически активировать виджет на каком-либо новом '.button' элементы, вставленные в DOM после начальной загрузки страницы через ajax.
Ранее, я использовал livePlugin с кодом что-то вроде этого:
$('.button')
.live(function(){
$(this).button();
})
С тех пор 'живой' был перемещен в jQuery, удаляют сердцевину живой функции, требует типа события как первого параметра, таким образом, это больше не возможно. Есть ли альтернативный метод в ядре jQuery, которое достигнет этого?
У вас есть несколько вариантов. Во-первых, есть плагин liveQuery , например:
$(.button).liveQuery(function() { $(this).button(); });
Другой альтернативой является вызов селектора для ваших элементов при их загрузке, это, например, находит все .button
only в ответ, чтобы не вмешиваться в существующие элементы перед вызовом ajax:
$.ajax({
url: 'page.html'
success: function(data) {
//stuff...
$('.button', data).button();
}
});
Другой аналогичный подход, если у вас много чего происходит, - это включить ваши плагины в функцию, подобную этой:
function rigUI(context) {
$('.button', context).button();
$('.date', context).datepicker();
}
$(rigUI); // Load at document.ready, default context is document
//in ajax load love above call: rigUI(data);