我正在嘗試通過layer.bindPopup
來編寫要素屬性的功能以用於Leaflet功能。在這一點上,我幾乎所有我需要的東西,除了最後一件事:Documentation是說layer.bindPopup
需要HTML字符串或HTML元素,所以我需要連接我的HTMLString
與兩個元素:saveChanges
按鈕和speed_input
輸入,然後提供layer.bindPopup
與它。任何使用$.append
的操作都沒有幫助。有關如何解決這個問題的任何建議?使用HTML字符串將HTML元素連接到Leaflet的bindPopup
function onEachArc(feature, layer) {
// Create an input
var speed_input = L.DomUtil.create('input', 'speed');
// Set a feature property as value
speed_input.value = feature.properties.speed;
// Add a listener to watch for change on time input
L.DomEvent.addListener(speed_input, 'change', function(){
// Change the value of speed
feature.properties.speed = speed_input.value;
});
// Bind popup to layer with input
HTMLString = '<table style="width:100%">\
<tr style="background-color:grey">\
<th><b>Arc Numer: </b>' + feature.properties.linkstr + '</br></th>\
</tr>\
<tr>\
<td><b>Speed: </b> ' + feature.properties.speed + '.</div></td>\
</tr>\
</table>';
var saveChanges = document.createElement('button');
saveChanges.innerHTML = 'Save Changes';
saveChanges.onclick = function(){
$.ajax({
type:"POST",
url:"php/updateFeature.php",
data: {feature: feature},
success: function(data){
$('#test').html(data);
}
});
//return false;
}
};
/*
This did not help
var box = document.createElement("div");
box.style.width = "100px";
box.style.height = "100px";
$("#box").append("#saveChanges");
layer.bindPopup(box);
*/
layer.bindPopup(saveChanges);
};
我更喜歡outerHTML方法,因爲我覺得最終使用HTML字符串更容易。但是,如果我在此按鈕上添加'onclick'事件,它將不起作用: 'button.onclick = function(e){e.preventDefault();警報(「嗨」)}' – ievgenii
這是哈克,但我只是回答你的問題,這不是一個很乾淨的方式來做這種事情。我會在我的回答中詳細闡述一下。 – iH8
哇!這真的很花哨!我正在查看[this](https://www.mapbox.com/mapbox.js/example/v1.0。0/clicks-in-popups /)例子,並且我理解爲什麼我以前的方法不起作用的原因 - 我放入bindPopup的HTML還不存在,就像它在示例中解釋的那樣。但我想不出先創建HTML然後從'layer.on('click')'函數訪問它的方法。非常感謝您的幫助! – ievgenii