jQueryのドキュメントには、この関数live()
を使用する必要があることが非推奨であることが示されていon()
ます。
jQuery 1.7以降、.live()メソッドは非推奨になりました。.on()を使用して、イベントハンドラーをアタッチします。古いバージョンのjQueryのユーザーは、.live()ではなく.delegate()を使用する必要があります。
これは、このフィドルでの作業を見ることができる例です。
$(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.');
});
});