События Jquery не срабатывают на контенте, загруженном через load () - PullRequest
1 голос
/ 05 октября 2010

Каков подходящий метод для получения уже инициализированного JavaScript для взаимодействия с контентом, загруженным с помощью метода load () jQuery?

Пример: У вас есть таблица с событием onclick для каждой строки, затем добавьте () новую строку в таблицу, внезапно событие onclick () не сработает.

Надеемся, что это можно сделать без повторной инициализации каждого события вручную, записав его в код, выполняющий функцию load ().

Я смотрел на $ .getScript, live () и bind () - но не получил ничего, чтобы работать. Прежде чем я начну часами проб и ошибок, я был бы признателен за некоторые рекомендации.

1 Ответ

2 голосов
/ 05 октября 2010

Для события примеров, которые вы хотите .live() или .delegate(), например:

$("table").delegate("tr", "click", function() {
  //do something, the table row is this, for example:
  $(this).toggleClass("selected");
});

Для этого нужно прикрепить обработчик событий к элементу <table>, который прослушивает события , всплывающие (какие элементы делают независимо от того, когда они были добавлены) и воздействует на эти события, если элемент событие произошло из совпадений селектора, в данном случае <tr>.

Или это элемент с неизвестным родителем, используйте .live() вот так:

$(".something").live("click", function() {
  $(this).toggleClass("selected");
});

.live() работает очень похоже (в лице .delegate() использует .live() внутренне), он просто присоединяется к document, поэтому родительский элемент выше в DOM.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...