javascript - 循环 jQuery 脚本以获取元素列表
问题描述
我有以下 jQuery 脚本,我需要为一长串对象执行该脚本。
$("#ID_001").change(function(event) {
event.preventDefault();
if(map.hasLayer(ID_001)) {
$(this).removeClass('selected');
map.removeLayer(ID_001);
} else {
map.addLayer(ID_001);
$(this).addClass('selected');
}
});
我做了什么
使用以下资源:
我认为这不是上述问题的重复问题,因为这包括一个事件处理函数。
我已经编写了以下循环,但这仍然不起作用。我不明白问题出在哪里。
var obj = {
"#ID_001": "ID_001",
"#ID_002": "ID_001"
};
$.each( obj, function( key, value ) {
$(key).change(function(event) {
event.preventDefault();
if(map.hasLayer(value)) {
$(this).removeClass('selected');
map.removeLayer(value);
} else {
map.addLayer(value);
$(this).addClass('selected');
}
});
});
谁能向我解释问题出在哪里?
更多详细信息
该脚本是 LeafLet 地图控制按钮的一部分。当我单击#ID_001
元素时,Chrome DevTool 会显示此错误消息,因此我认为问题在于value
变量没有获得正确的值。
未捕获的类型错误:无法在 HTMLInputElement 的 i.hasLayer (Layer.js:211) 的 m (Util.js:56) 上的字符串“L_puntiA”上创建属性“_leaflet_id”。(mymap_main.js:103) 在 HTMLInputElement.dispatch (jquery-3.3.1.slim.min.js:2) 在 HTMLInputElement.v.handle (jquery-3.3.1.slim.min.js:2)
解决方案
如评论中所述,您的问题是您使用字符串而不是变量定义对象。
代替:
var obj = {
"#ID_001": "ID_001",
"#ID_002": "ID_001"
};
利用:
var obj = {
"#ID_001": ID_001,
"#ID_002": ID_002
};
推荐阅读
- python - 带有子文件夹的 Django 视图定义在第二次未正确呈现
- fitnesse - 什么决定了fitSharp runner 域名?
- visual-studio-code - 添加了订阅的功能“supportResettableProperties”,但未设置可重置属性
- bash - 从while循环读取文件没有得到第一行
- c# - 客户端评估 efcore 后无法处理集合操作
- node.js - Nodejs 命令行参数需要引号才能被识别
- bash - 将字符串拆分为键值对并使用它们来设置环境变量
- php - 通过 PHP DOM Manipulation 添加新的 XML 元素
- python - 从 Python 中的 REST API 输出进行有效打印
- docker - 使用 docker-compose 在 docker 之间共享文件