2013-07-15 2 views
0

Я использую jQuery для добавления HTML в DOM. После вставки я хотел бы создать обработчик событий, который вызывается на keyup и нажимает на ссылку, добавленную в el. Однако jQuery не находит элемент a, поскольку он был добавлен после загрузки страницы.Нажмите на динамически добавленную ссылку на KeyUp с jQuery

var el = $("#name"); 
// add content to el 
$(document).keyup(function(e) { 
    el.find('a').click(); 
}); 

Как обновить DOM в el? Я знаю, что есть on() (и его предшественники) в jQuery. Тем не менее, они не помогают мне, поскольку событие не, зарегистрированное на добавленном элементе, но на документе и еще одно событие происходит только на вновь добавленном элементе. Любые идеи о том, как это решить?

+0

Как насчет связывания события KeyUp при добавлении контента? – Virus721

+0

Обработчик событий 'keyup', видимо, только срабатывает в элементах' input' и 'textarea'. – str

+0

Вы тоже пытались привязать его к окну? – Virus721

ответ

0

Благодаря реакцию @Johan я делал дальнейшую отладку и нашел решение:

el.find('a')[0].click(); 

Так что реальная проблема была не меняется DOM, но click() события, которое, по-видимому может быть применено только к одному элемент, а не список только одного элемента.

Некоторые дальнейшее обсуждение click() не стреляя можно найти здесь: Can I call jquery click() to follow an <a> link if I haven't bound an event handler to it with bind or click already?

+0

'click()' можно вызывать на нескольких элементах. Перейдите на обычную страницу с jQuery и сделайте $ ("a"). Click() и посмотрите, как весело начинаются! Проблема заключается в динамически добавленном контенте. Я не уверен, почему jQuery не может справиться с этим (по крайней мере, в версии, которую я использую, как 1.7). – Andrew