с помощью jquery создать div с помощью кнопки, а затем записать событие нажатия новой кнопки? - PullRequest
2 голосов
/ 28 августа 2009

Я хочу использовать jQuery для создания нового div на странице, когда активируется событие нажатия определенной ссылки. Я знаю, что эта часть будет в порядке. Что меня беспокоит, так это то, что если внутри только что созданного div есть другая ссылка, смогу ли я затем использовать jQuery для захвата события click этой новой ссылки? То есть Сможет ли javascript захватывать события кликов для нового HTML-элемента, который был «динамически» вставлен с использованием jQuery? Если нет, как я могу имитировать эту функцию?

Спасибо

Ответы [ 3 ]

2 голосов
/ 28 августа 2009

Дэвид прав - вживую это довольно круто, и я часто им пользуюсь. Есть некоторые события, которые нельзя использовать в прямом эфире - поэтому для полноты картины вы также можете подключить новые события при изменении DOM. Например:

$("#some_link").click(function() { 
  $("great_selector").html("<a id='radtimes' href='/radtimes'>rad times</a>");
  $("#radtimes").click(function() {
    alert('more rad things happened!');  
  }); 
});
2 голосов
/ 28 августа 2009

Да, в новом jQuery есть функция live. Вам также может понадобиться доступ к livequery, в зависимости от того, что вам нужно сделать.

в прямом эфире: http://docs.jquery.com/Events/live#typefn

livequery: http://docs.jquery.com/Plugins/livequery

Удачи!

0 голосов
/ 28 августа 2009

Я вижу, что у вас есть ответ, но вот пример кода, который создает новую ссылку и связывает функцию с ее событием click за один раз. Измените по мере необходимости для вложенных элементов. Использование вызовов связанных функций здесь позволяет избежать потенциальных проблем с экранированием кавычек, если используется HTML в строке. Да, и return false хорошо иметь в конце обработчика кликов, так как он предотвращает активацию ссылки.

$('body').append($('<a>').attr('href', '#').text('Foo').click(function() {
    alert('Foo!');
    return false;
}));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...