Javascript事件处理程序使用其范围之外的变量的问题

时间:2013-06-12 20:00:20

标签: javascript jquery scope asp.net-web-api

我有一个像这样的javascript事件处理程序:

for (i = 0; i < x; i++){
 var table = tableList[i];
 var tableID = table.getAttribute('id');

 var selector = table.querySelectorAll('input')[0];
 selector.on('focusout', function(){
    alert(tableID);
 }):
}

tableID警告始终是tableList中最后一个表的ID,无论我使用哪个表。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

您可以将tableID作为数据对象附加到事件处理程序。请尝试以下方法。

selector.on('focusout', { tableID: tableID }, function(e) {
    alert(e.data.tableID);
}):

根据jQuery文档。

//data
//Type: Anything
//Data to be passed to the handler in event.data when an event is triggered.