У меня есть вопрос. Я пытаюсь динамически добавлять элементы меню на свою веб-страницу. Эта проблема заключается в том, что я обрабатываю навигацию по страницам через обратный вызов. С помощью кода, который я использую прямо сейчас, только элемент LAST массива всегда работает. Я не знаю, почему это так, но я бы хотел помочь. Я также предоставил страницу jsfiddle, чтобы вы могли видеть, что происходит.JQuery Динамически добавить обратный вызов
Код: https://jsfiddle.net/usz2nvqw/
HTML:
<div id='page_nav'>
<!-- Navigation Elements -->
</div>
JAVASCRIPT:
var pages = {
"home": {
"resource_name": "Home",
"name": "Home Page",
"header": "Featured"
},
"catalogue": {
"resource_name": "Browse",
"name": "Browse Catalogue",
"header": "Public Catalogue"
}
};
$(document).ready(function() {
for (var key in pages) {
if (pages.hasOwnProperty(key)) {
//Add a new link for the Menu Navigation Element
document.getElementById('page_nav').innerHTML += "<a id='nav_" + key + "'>"
+ pages[key].name + "</a><br /><br />";
//Create a new callback for the Menu Navigation Element
$('#nav_' + key).click(createCallBack(key));
}
}
});
//Function for returning a callback
function createCallBack(key) {
return function() {
alert("Callback fired");
}
}
вы можете найти ответ, почему innerHTML не работает http://stackoverflow.com/questions/5113105/manipulating-innerhtml-removes-the-event-handler-of-a-child-element – xinyuan