Функциональность jQuery .live() для других методов jQuery, таких как .text()

У меня проблема в том, что мой материал jQuery не работает после того, как div, который включает элементы, которыми манипулирует мой код jQuery, перезагружается ajax. Функция jQuery .live помогла мне в том, что по крайней мере все мои события запускаются. Однако такие функции, как .text(), по-прежнему не работают. Например.

$('#idOfElementBeingInDivWhichIsReloadedByAjax').text('New text');

Кто-нибудь предлагает, как справиться с этой проблемой?

Изменить. Проблема в том, что веб-сайт, над которым я работаю, загружает содержимое своей страницы с помощью ajax при нажатии на элемент навигации. Вся функциональность jQuery работает при первом посещении сайта. Однако во второй раз DOM перезагружается, а jQuery по-прежнему использует исходный DOM, поэтому такие методы, как .text(), больше не показывают изменений. Как упоминалось выше, метод .live() помог мне в том, что, по крайней мере, события все еще запускаются после второго вызова определенной страницы.


person user1335772    schedule 29.05.2012    source источник
comment
нужно больше контекста, не могли бы вы больше кода? По крайней мере, метод обратного вызова вашего вызова ajax   -  person Andreas Wong    schedule 29.05.2012
comment
что такое тип idOfElementBeingInDivWhichIsReloadedByAjax?   -  person Adil    schedule 29.05.2012
comment
Вы можете просто запустить этот код в обратном вызове ajax (конечно, не обязательно в самой функции обратного вызова), когда это необходимо. Только события должны быть живыми... Реализация live не имеет ничего общего с отслеживанием новых элементов по мере их создания, что вам нужно будет сделать, если вы хотите, чтобы другие методы были живыми, как .text.   -  person Esailija    schedule 29.05.2012
comment
Ребята, пусть он объяснит это лучше, прежде чем "проголосовать против"   -  person Dipak    schedule 29.05.2012
comment
@Adil: этот элемент может быть div или span.   -  person user1335772    schedule 29.05.2012


Ответы (1)


Единственный способ сделать это - убедиться, что ваш код выполняется после перезагрузки ajax. Обычный подход заключается в создании функции init(), которая вызывается из функции обратного вызова ajax.

$(function(){
  $('#myParentAjaxDiv').load('somepage.html', function(){
    initStuff();
  });
});

function initStuff(){
  $('#idOfElementBeingInDivWhichIsReloadedByAjax').text('New text');
}
person aaberg    schedule 29.05.2012