html()、text()動態載入內容、click()與on() 差異
<body>
</body>
$(document).ready(function() {
$('body').html('<h1>以jQuery產生文字</h1>')
});
<body>
<h2></h2>
</body
$(document).ready(function() {
$('body h2').text('以jQuery產生文字')
});
click()
→需要小心程式碼順序,不然會產生無效。on()
→監聽:無論動態載入或其它載入方式,都可以即時性的一併綁定這個效果,不需在意程式碼順序。
$(document).ready(function() {
// click()範例
$(".box").click(function(event) {
event.preventDefault();
//填入要執行的程式碼
});
// on()範例
$('body').on('click', '.selector', function(event) {
event.preventDefault();
//填入要執行的程式碼
});
});
<div class="wrap">
<div class="box1"></div>
<div class="box2">
<h1>寫在HTML裡面</h1>
</div>
</div>
//有效:.box1先以動態寫入h1,點擊h1做alert指令就有綁定效果,所以.box1和2就都會跑出alert指令
$(document).ready(function() {
$('.box1').html('<h1>用jQuery動態產生的</h1>')
$('h1').click(function(event){
alert('有效');
});
});
//無效:先下h1 click,前方的程式碼會先跑找出所有的h1做alert有效動作。當中並沒有包含動態產生的h1,所以按下.box1中的h1不會跑出有效
$(document).ready(function() {
$('h1').click(function(event){
alert('有效');
});
$('.box1').html('<h1>用jQuery動態產生的</h1>')
});
<div class="wrap">
<div class="box1"></div>
<div class="box2">
<h1>寫在HTML裡面</h1>
</div>
</div>
</div>
//on()可不須分前後順序
$(document).ready(function() {
$('.wrap').on('click', 'h1', function(event) {
event.preventDefault();
alert('有效');
});
$('.box1').html('<h1>用jQuery動態產生的</h1>');
});