有的元素可以第一次加載的時候並沒有存在頁面中,可是我們經過一些操作之後追加到dom樹上,這個時候我們要是能提前添加上事件就好了。
廢話不多說還是,直接拿例子來說事情
// 引入jquery庫 方便進行dom操作
需求就是 頁面有一個按鈕 點擊生成一個p元素 然後點擊p元素彈出一個hello world
事實上 此時p元素並不在我們的dom樹上
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/1.11.3/jquery.js"></script>
<div></div>
<button class="creat">生成p標籤</button>
<script>
$('.creat').on('click',function(){
$('div').html('<p class="p1">點我試試看</p>');
})
</script>
我們直接根據p元素的類名進行綁定的話 事件是不會生效,都知道我們的js代碼是順序執行了,它根據 $(’.p1’) 在頁面上找到這個元素 是不會給這個元素進行事件綁定的
$('.p1').on('click',function(){
alert('hello world')
})
這個我們可以同時 事件委託的方式進行解決,利用冒泡機制進行事件的綁定,不確定他會在哪個元素下 就卸載body上 這個是百分百可以確定的,畢竟元素都是在 body中包括着,事件委託要求元素並非一定在dom樹上,也可以在未來的一個時刻上加入dom樹,事件都是成立,這樣就實現了上面的需求
$(document.body).on('click','.p1',function(){
alert('hello world');
})