.on()不适用于生成的元素
问题描述:
AFAICT这应该工作,但它不会。使用jQuery 1.9.0,我有以下几点:.on()不适用于生成的元素
<html>
<head>
<script type="text/javascript" src="js/libs/jquery-1.9.0/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$("button").click(function() {
$("#area").html("<p>click me</p>");
});
$("p").on("click", function() {
alert($(this).text());
});
});
</script>
</head>
<body>
<p>some text</p>
<button>Create me</button>
<div id="area"></div>
</body>
</html>
为什么点击“一些文字”把警报,但点击生成的“单击我”呢?我认为.on()的重点是在动态生成的代码上启用事件处理程序。根据Click event doesn't work on dynamically generated elements这应该工作,但它没有。请参阅http://jsfiddle.net/ymUYy/1/
答
.on()
不是.live()
的替代替代品。您需要使用事件代表团语法:
$('#area').on('click', 'p', function() {
...
});
+4
关于委托知道的重要一点是,您应用'.on()'的元素在您调用时必须存在,第二个参数中指定的元素可以动态添加。 – Barmar 2013-04-04 01:46:12
[请阅读jQuery的'。对()'文档,其中代表团清楚的解释(http://api.jquery.com/on/) – Sparky 2013-04-04 01:46:06