我有以下 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 地圖控制按鈕的一部分。當我單擊#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)
uj5u.com熱心網友回復:
正如評論中所指出的,您的問題是您使用字串而不是變數定義物件。
代替:
var obj = {
"#ID_001": "ID_001",
"#ID_002": "ID_001"
};
用:
var obj = {
"#ID_001": ID_001,
"#ID_002": ID_002
};
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/343077.html
標籤:javascript 查询 循环 传单 每个
上一篇:使用for回圈向后迭代不起作用
下一篇:回圈中具有零的所有陣列組合
