Как получить новые классы и идентификаторы - PullRequest
0 голосов
/ 02 апреля 2011

У меня есть несколько вкладок в заголовке и я использую Xajax для загрузки больших модулей - почти всей страницы. Внутри есть некоторый класс, который я использую для вызова с помощью jQuery (например, привязка к некоторому классу, а затем событие click ...). Но когда я загружаю новый модуль и назначаю новый контент (с новыми классами и идентификаторами), селекторы jQuery, кажется, не работают - т.е. после привязки щелчка ничего не происходит.

Совершенно похожая ситуация возникает, когда вы забываете $ (document) .ready (...), используя jQuery. Есть ли какое-либо решение, чтобы сообщить jQuery о новом контенте, новом классе и идентификаторах, которые не были доступны при загрузке страницы?

1 Ответ

0 голосов
/ 02 апреля 2011

Это потому, что привязка вашего события работает только для элементов DOM, которые существуют , когда привязка называется . Поскольку ваши модули загружаются после вызова привязки ($('#sel').click(..)), эти элементы DOM не будут привязаны к обработчику событий.

Чтобы обойти это, вы можете использовать метод jQuery .live() для привязки элементов, которые будут загружены позже. jQuery будет отслеживать все создаваемые новые элементы DOM и будет вызывать привязку и для новых элементов.

http://api.jquery.com/live/

LIVE DEMO

 <div class="clickme">
    Click here
  </div>

$('.clickme').click(function(){
    alert('click event from normal binding!');
    $(this).parent().append('<div class="clickme">Click here - won\'t trigger for normal bind</div>');
})


$('.clickme').live('click', function(){
    alert('click event from live binding!');
})    
...