javascript - Javascript 事件处理程序使用其范围之外的变量时出现问题

标签 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。

有什么想法吗?

最佳答案

您可以将 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.

关于javascript - Javascript 事件处理程序使用其范围之外的变量时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17074242/

相关文章:

jquery - Highcharts/Highstock 滚动条和缩放问题

javascript - Javascript 变量作用域问题

c++ - 使用 boost::iterator_range;我的数据在哪里超出范围?

javascript - Knockout.js - 注册以更改 observableArray

javascript - 扩展每个 Ajax.Request onSuccess 事件(Javascript 原型(prototype)框架)

jquery - 如何去除 nivo slider 周围的边框

javascript - 措辞不佳的 JavaScript 词法作用域示例

Javascript的逻辑运算和大于问题

javascript - AG-GRID - 使用restoreFilterModel可以工作,但在恢复过滤器之前会重新绘制整个网格

javascript - 谷歌地图在输入时显示错误的位置