Ajax вернул html, по-видимому, не распознает функции JavaScript, которые к нему относятся - PullRequest
2 голосов
/ 25 ноября 2010

Я делаю ajax-запросы, которые возвращают элементы в таблице.Это все прекрасно работает и отображается правильно.Тем не менее, я замечаю, что любые элементы, которые добавляются в таблицу и содержат что-то вроде этого

<div id="myId">Some Text</div>

, не будут связаны предыдущими методами javascript, которые привязываются к методу myId следующим образом:

$("#myID").click(function() { alert("HI!") };

Он хорошо работает на всем, что загружается до вызова ajax, но если он заполнен hjml-кодом ajax, то по какой-то причине эти теги не понимают, что им следует прослушивать клики.

Кто-нибудь может понять этоЯ использую JQuery для того, что стоит

Ответы [ 2 ]

6 голосов
/ 25 ноября 2010

Использовать вживую , вот так:

$("#myID").live('click', function() { alert("HI!"); });

live связывает обработчик для текущих и будущих элементов; click делает это только для текущих.

2 голосов
/ 25 ноября 2010

Ваша проблема связана с тем, что .click() привязывает ваш обработчик только к уже существующим элементам, которые соответствуют селектору. Вам необходимо использовать .live() или .delegate(), которые будут привязывать ваш обработчик к элементам, которые существуют как сейчас, так и в будущем. Для простоты, давайте пойдем с .live():

$("#myID").live("click", function() {
  alert("Hi!"); 
});

"Как это работает?" Вы можете спросить. Ну, .live() фактически связывает ваш обработчик с указанным событием с document. Затем он следит за указанным событием, когда всплывает DOM. Когда он достигает document, он проверяет, где произошло событие, если оно произошло от элемента, соответствующего вашему селектору, срабатывает ваш обработчик.

.delegate() работает во многом таким же образом, за исключением того, что он привязывает обработчик к элементу, который вы указываете для $(), и в качестве параметра он принимает селектор. Затем он отслеживает событие и, когда всплывает до элемента, указанного в $(), он проверяет, произошло ли событие из элемента, который вы указали в качестве первого параметра, и если это происходит, ваш обработчик срабатывает.

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