0

我想为一些动态添加的元素添加一个事件处理程序。我将我的问题简化为下面的基本代码。我正在使用新的 JQuery 1.7 on 功能说“嘿,对于 CancelSurvey id 元素中的所有标签,当它们被单击时调用此通知函数。”

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

我想将标签的 ID 作为参数“名称”传递。当我尝试提醒这一点时,它是未定义的(它们是在创建的 html 中定义的)。我相信在这种情况下使用 $(this) 并没有引用标签选择器。它实际上似乎是在引用文档本身。关于如何做到这一点的任何想法?

4

2 回答 2

2

这是因为您正在评估this分配处理程序的封闭上下文,因此它不是对元素的引用。

由于您知道 ID,因此可以使用字符串。

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

或者跳过事件数据,直接从处理程序中的元素获取

function notify(event) {
    console.log(this.id);
}
于 2012-04-12T17:25:26.123 回答
0

触发事件的 DOM 元素应该被传递到点击处理程序中,您可以在事件处理程序中以这种方式提取 ID。我很确定在处理程序中,this指向触发事件的 DOM 元素。

于 2012-04-12T17:26:00.897 回答