元素列表的循环 jQuery 脚本
Loop jQuery script for a list of elements
我需要为一长串对象执行以下 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');
}
});
我做了什么
使用以下资源:
- api.jquery.com
- jquery-loop-for-script
- jquery-for-each-looping-a-list-of-objects
我认为这不是上述问题的重复问题,因为它包含一个事件处理函数。
我已经编写了以下循环,但这仍然不起作用。我不明白问题出在哪里。
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 地图控制按钮的一部分。 Chrome DevTool 在我单击 #ID_001
元素时显示此错误消息,因此我认为问题在于 value
变量未获得正确的值。
Uncaught TypeError: Cannot create property '_leaflet_id' on string
'L_puntiA'
at m (Util.js:56)
at i.hasLayer (Layer.js:211)
at HTMLInputElement. (mymap_main.js:103)
at HTMLInputElement.dispatch (jquery-3.3.1.slim.min.js:2)
at 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
};
我需要为一长串对象执行以下 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');
}
});
我做了什么
使用以下资源:
- api.jquery.com
- jquery-loop-for-script
- jquery-for-each-looping-a-list-of-objects
我认为这不是上述问题的重复问题,因为它包含一个事件处理函数。
我已经编写了以下循环,但这仍然不起作用。我不明白问题出在哪里。
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 地图控制按钮的一部分。 Chrome DevTool 在我单击 #ID_001
元素时显示此错误消息,因此我认为问题在于 value
变量未获得正确的值。
Uncaught TypeError: Cannot create property '_leaflet_id' on string 'L_puntiA' at m (Util.js:56) at i.hasLayer (Layer.js:211) at HTMLInputElement. (mymap_main.js:103) at HTMLInputElement.dispatch (jquery-3.3.1.slim.min.js:2) at 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
};