У меня есть несколько элементов <tr>
на моей странице с событием click()
, прикрепленным к изображению, которое находится внутри каждого из них. Я использую этот код
$(this).clone(true).appendTo("table#foo");
сделать следующее:
- скопируйте эти
<tr>
в другую таблицу
- сохраняет события щелчка на изображениях внутри
<tr>
s (из-за аргумента true
)
Все это прекрасно работает. Теперь я добавил событие jQuery Listen к этим <tr>
s, чтобы пользователю не нужно было точно целиться: он / она может щелкнуть в любом месте на <tr>
, и я могу передать щелчок к изображению.
Это закодировано так:
$('tr.record').listen('click','td',function(){
$(this).parent().find("img.clickable").click();
});
Событие listen () отлично работает на исходном элементе, но на клонированном элементе событие listen () завершается неудачей. Событие click изображения все еще работает нормально.
Вот что Firebug говорит мне:
m(this, e.type) is undefined
... и он ссылается на строку 9 jquery.listen-1.0.3-min.js.
Как я могу заставить событие listen () работать с клонированными элементами?
Обновление
По умолчанию jQuery не копирует события на клонированных элементах, но этот плагин создан для этого.
Между тем, автор плагина listen () предложил другую стратегию - см. Мой ответ ниже.