【发布时间】:2018-12-19 03:41:07
【问题描述】:
当我单击它时,我试图删除一个按钮和 alert(),然后该函数将在搜索高级的遗产后,将一个“相同”按钮附加到容器 div, 我尝试使用 on()/live()/delegate()/ 不幸的是它们不起作用。
<body>
<div id="container"></div>
<hr>
<button onclick="clicked()">Other one</button>
<hr>
</body>
<script>
$(document).ready(function(){
var i = 0;
$("#container").append("<button id='btn_sub' onclick='clicked()'>Click Me!</button>");
$("[id='btn_sub']").delegate(this,"click",function(){
$("#container").empty();
$("#container").append("<button id='btn_sub' onclick='clicked()'>Click Me!"+i+"</button>");
i++;
});//tried click/on click/live
});
function clicked(){
alert(1);
}
</script>
最后,在这个例子中,$(document).ready() 中的 clicked 函数和 alert 的部分起作用了。
有没有其他方法可以达到同样的效果? 为什么 on()/live()/delegate()/ 不起作用?
谢谢。
【问题讨论】:
-
你的 jquery 版本是多少?
-
jquery-3.3.1.js
-
为什么需要删除按钮并重新附加?不能随便修改吗?
-
.delegate 已被弃用
-
第一次确实可以工作...添加了新的按钮元素。但是由于添加了事件处理程序的旧按钮被删除并且没有重新订阅新的按钮元素,所以 count 在 0 之后不会增加。onclick="clicked()" 虽然有效。
标签: javascript jquery