2012-05-29 1 views
1

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

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

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

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

+0

Необходимо больше контекста, не могли бы вы больше кода? По крайней мере, метод обратного вызова вашего ajax-вызова –

+0

что такое тип idOfElementBeingInDivWhichIsReloadedByAjax? – Adil

+0

Вы можете просто запустить этот код в обратном вызове ajax (не обязательно в самой функции обратного вызова, конечно), когда это необходимо. Только события должны быть «живыми» ... Реализация «live» не имеет ничего общего с отслеживанием новых элементов по мере их создания, что вам нужно будет делать, если вы хотите, чтобы другие методы были «живыми», .text'. – Esailija

ответ

0

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

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

function initStuff(){ 
    $('#idOfElementBeingInDivWhichIsReloadedByAjax').text('New text'); 
}