【发布时间】:2017-08-22 21:28:16
【问题描述】:
我在解决一个基本问题时遇到了麻烦,但我什至无法弄清楚帮助自己研究的合适术语是什么。
本质上,我有一个.change() 侦听器,用于侦听div 中复选框的变化(它们切换传单地图层)。我想创建一个变量来保存选中复选框的列表。我可以这样做,但是,对于.change() 侦听器触发的每次时间,它似乎都会保留检查了哪些层的各个实例。一些应该重新创建问题的代码:
var lyrs;
$("div#myID input:checkbox").change(function() {
lyrs = $("div#myID input[type='checkbox']:checked").map(function() { return this.id });
console.log('in .change(): ', lyrs)
legendFunction( lyrs );
});
function legendFunction( lyrs ) {
map.on('click', function() {
console.log('in legendFunction: ', lyrs);
});
};
当我在.change 回调函数中将变量打印到控制台时,存在一个lyrs 对象。但是,当我从legendFunction 中的.on('click') 回调函数打印它时,它会打印一个在每次选中或取消选中复选框时选中的层列表(因为缺少更好的词)。下图显示了这一点:
发生了什么事?如何让.on('click') 函数中的lyrs 变量仅对应于最近的.change() 事件的层?
【问题讨论】:
标签: javascript jquery onclick click onchange