jQuery 文档表明live()
已弃用,您应该使用该on()
函数。
从 jQuery 1.7 开始,不推荐使用 .live() 方法。使用 .on() 附加事件处理程序。旧版本 jQuery 的用户应该使用 .delegate() 而不是 .live()。
这是一个你可以在这个fiddle中看到的例子。
$(function() {
$('#container').on('click', 'div', function() {
console.log('clicked');
});
$('#container').append($('<div>BLE</div>'));
});
以及随之而来的 HTML:
<div id="container">
<div>BLA</div>
</div>
编辑
on()
请查看以下小提琴,这是一个更完整的示例,可能会澄清您对该方法的使用方式的疑问: DEMO。
HTML
<div id="container">
<div>
First you have these buttons with the bound click handler<br/>
<button>One</button><br/>
<button>Two</button><br/>
<button>Three</button><br/>
</div>
</div>
<hr/>
<button id="load-btn">Click this button to load the buttons below in the <div> above</button>
<hr/>
<div id="content">
<div>
These buttons are going to be loaded above.<br/>
<button>Four</button><br/>
<button>Five</button><br/>
<button>Six</button><br/>
</div>
</div>
JS
$(function() {
// Bind click handler to the #load-btn which will
// dynamically load the lower div content inside the upper div.
$('#load-btn').on('click', function() {
$('#container').append($('#content').html());
});
// Bind another click handler to all <button>s that exist at the moment
// and that could be added dynamically inside the #container element.
$('#container').on('click', 'button', function() {
console.log('button ' + $(this).html() + ' clicked.');
});
});