Поскольку вы удаляете элемент, привязанное к нему событие также будет удалено.
Чтобы сделать событие постоянным, вы можете привязать событие к документу вместо элемента с помощью document.AddEventListener()
. Затем нам нужно проверить цель, если у нее есть идентификатор #ShowMe
.
document.AddEventListener("click",function(e) {
if(e.target = "#idOfYourElement"){
// do something
}
});
Запустить рабочую демонстрацию ниже;
document.getElementById("nav").addEventListener("click", function(e) {
if (e.target = "#ShowMe") {
alert("Hello World!");
var pstrHTML = "<ul>" +
"<li class='current'><a href='index.html'>Welcome</a></li>" +
"<li class='submenu'>" +
"<a id='ShowMe' href='#'>Show Me</a>" +
"<ul>" +
"<li><a href='hybrid/index.html'>The Hybrid</a></li>" +
"<li><a href='hybrid/index.html'>New Element 1</a></li>" +
"<li><a href='hybrid/index.html'>New Element 2</a></li>" +
"</ul>" +
"</li>" +
"</ul>";
document.getElementById("nav").innerHTML = pstrHTML;
}
});
<nav id="nav">
<ul>
<li class="current"><a href="index.html">Welcome</a></li>
<li class="submenu">
<a id="ShowMe" href="#">Show Me</a>
<ul>
<li><a href="hybrid/index.html">The Hybrid</a></li>
</ul>
</li>
</ul>
</nav>
document.AddEventListener()
эквивалентно $(document).on("action","#id",function(){ });
в jquery.
РЕДАКТИРОВАТЬ: Включая ответ Teemu, это также будет работать;
document.getElementById("nav").addEventListener("click", function(e) {
if (e.target = "#ShowMe") {
// do something
}
});