JQuery живой обработчик, но для каждого ()? - PullRequest
2 голосов
/ 11 августа 2010

Я знаю, что live () может использоваться для поддержки обработчиков событий для текущих элементов DOM "добавлено позже".

Интересно, как сделать то же самое с каждым ()?

Например, если у меня есть $ ('.thing_or_other'). Each (), но затем добавляется еще один элемент DOM с class = "thing_or_other "?Как настроить его так, чтобы он автоматически применял каждую итерацию к этому новому элементу DOM?

ИЛИ, что я могу вызвать после добавления нового элемента DOM для повторного применения правил each ().

(Здесь немного указывается мой возраст, но в разделе «Поведение» мы можем использовать Behaviour.apply () для повторного применения ВСЕХ правил!)

Ответы [ 2 ]

0 голосов
/ 11 августа 2010

Как отмечалось @ meder , вам действительно нужно сделать это вручную.Вы можете использовать одну и ту же функцию для обоих, если хотите.

function myFunction(i,val) {
    $(this).doSomething;
}

$('someSelector').each( myFunction );

$.ajax({
    url:'/some/path/',
    success: function( data ) {
        $(data).find('someSelector').each( myFunction )
               .end().appendTo('body');
    }
});

Если вы действительно не хотите этого делать, есть плагин под названием livequery, который будетзапускать код, когда элемент, соответствующий селектору, добавляется (или удаляется из) в DOM.

Это требует дополнительных затрат, но это опция.

http://brandonaaron.net/code/livequery/docs

0 голосов
/ 11 августа 2010

Почему вы не можете просто привязать функциональность к обратному вызову ajax, который добавляет элементы DOM в документ?Кажется, самый короткий и логичный маршрут для меня.

...