用动态生成的锚标记调用jquery不起作用。与硬编码锚标记一样,jquery运行良好。
代码:
<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"> </script>
<script>
$(document).ready(function(){
var value = "HI!!!";
$("button").click(function(){
$("#box").html("<a class='dynamic' href='#' dataid='"+value +"'>Generate</a>");
});
$(".hardcode").click(function () {
alert("Calling function");
});
$(".dynamic").click(function () {
alert("ggsss function");
});
});
</script>
</head>
<body>
<a class="hardcode" href="#" dataid="sss">Generate</a>
<button>Change content of all p elements</button>
<div id="box">
</div>
</body>
</html>发布于 2016-07-06 11:00:50
对动态生成的元素使用$(document).on("click")
var value = "HI!!!";
$("button").click(function(){
$("#box").html("<a class='dynamic' href='#' dataid='"+value +"'>Generate</a>");
});
$(document).on("click",".hardcode",function () {
alert("Calling function");
});
$(document).on("click",".dynamic",function () {
alert("ggsss function");
});<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<a class="hardcode" href="#" dataid="sss">Generate</a>
<button>Change content of all p elements</button>
<div id="box">
</div>
发布于 2016-07-06 10:57:05
由于dynamic锚标记类是动态添加的,因此需要使用事件委托来注册事件处理程序,如下所示:
// New way (jQuery 1.7+) - .on(events, selector, handler)
$('#box').on('click', '.dynamic', function(event) {
event.preventDefault();
alert("ggsss function");
});这将将事件附加到#box元素中的任何锚点,从而减少检查整个document元素树的范围,并提高效率。
更多信息:
https://stackoverflow.com/questions/38222311
复制相似问题