Вопрос

У меня есть несколько <tr> элементы на моей странице с click() событие, прикрепленное к изображению, которое находится внутри каждого из них.Я использую этот код

$(this).clone(true).appendTo("table#foo");

сделать следующее:

  • скопируйте эти <tr>в другую таблицу
  • сохранить события кликов на изображениях внутри <tr>с (из-за true аргумент)

Все это работает нормально.Теперь я добавил jQuery Слушать мероприятие для тех <tr>s, чтобы пользователю не приходилось точно целиться:он/она может щелкнуть в любом месте <tr> и я могу передать клик на изображение.

Это закодировано так:

$('tr.record').listen('click','td',function(){
  $(this).parent().find("img.clickable").click();
});

Событие Listen() отлично работает с исходным элементом, но в клонированном элементе событие Listen() завершается сбоем. Событие щелчка изображения по-прежнему работает нормально.

Вот что мне говорит Firebug:

m(this, e.type) is undefined

... и он ссылается на строку 9 jquery.listen-1.0.3-min.js.

Как я могу заставить событие Listen() работать с клонированными элементами?

Обновлять

По умолчанию jQuery не копирует события клонированных элементов, а этот плагин создан для этого.

Тем временем автор плагина Listen() предложил другую стратегию — см. мой ответ ниже.

Это было полезно?

Решение

Ариэль Флеслер, создатель плагина Listen(), дал мне этот совет по электронной почте:

«Я думаю, что эту проблему можно решить и другим способом.Идея прослушивания (и делегирования событий) состоит в том, чтобы фактически избежать копирования событий для новых элементов ».

«Вы могли бы просто сделать:»

$('table#foo').listen('click','td',function(){
 $(this).parent().find("img.clickable").click();
});

"Или даже:"

$.listen('click','td',function(){
 $(this).parent().find("img.clickable").click();
});

«В первом примере таблица будет использоваться в качестве прослушивателя.Во 2-м,<html> используется тег.Поэтому независимо от того, добавляете ли вы новые таблицы td/tr/tables.Это все еще будет работать ".

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top