2012-04-12 3 views
0

Я хочу добавить обработчик событий к некоторым динамически добавленным элементам. Я упростил свою проблему в базовом коде ниже. Я использую новую функцию JQuery 1.7, чтобы сказать: «Эй, все метки в элементе id CancelSurvey вызывают эту функцию уведомления, когда нажимают».JQuery добавления событий

function notify(event) { 
    console.log(event.data.name); 
} 
$('#CancelSurvey').on('click', 'label', { name: $(this).attr("id") }, notify); 

Я хочу передать идентификатор метки в качестве параметра «имя». Когда я пытаюсь предупредить об этом, он не определен (они определены в созданном html). Я считаю, что использование $ (this) не относится к селектору меток в этом случае. На самом деле это похоже на сам документ. Любые идеи о том, как это сделать?

ответ

2

Это потому, что вы оцениваете this окружения, в котором назначен обработчик, поэтому он не является ссылкой на элемент.

Поскольку вы знаете идентификатор, вы можете использовать строку.

$('#CancelSurvey').on('click', 'label', { name: 'CancelSurvey' }, notify); 

Или пропустить данные события, и просто получить его из элемента в обработчике

function notify(event) { 
    console.log(this.id); 
} 
+0

Пытается передать идентификатор метки. Хотелось бы сделать эту погоду или нет, я знаю CancelSurvey. Этот случай немного упрощен. Анонимная функция не подходит для полного охвата того, что я пытаюсь сделать. – JBone

+0

@JBone: см. Вторую половину ответа. Вам не нужно сохранять его в объекте события. Просто используйте 'this.id' в обработчике. Не имеет значения, является ли функция анонимной или нет. Я использую вашу функцию «уведомлять». –

0

элемент DOM, который вызвал событие должно быть передано в обработчик щелчка, вы можете вытащите идентификатор таким образом в обработчике событий. Я уверен, что в обработчике this указывает на элемент DOM, который вызвал событие.

Смежные вопросы