|
|
|
|
|
|
在動態添加的元素HTML標記上綁定點擊事件,這篇文章解釋了如何為動態添加元素添加click事件。
在jQuery點擊事件中,我們可以簡單地使用.click()方法,它可以很好地工作,但是當你添加動態HTML并嘗試為它實現點擊事件時,那么你就會遇到問題例如.click()無效。 .click()沒有工作因為它沒有加載到dom上,所以現在我們要做的是使用jQuery v1.7的.on()方法。 .on()方法將事件處理程序附加到jQuery對象中。
原型 : .on( events [, selector ] [, data ], handler )
描述:將一個或多個事件的事件處理函數附加到所選元素。
HTML標記:這里我們有個UL列表標記,然后添加動態LI標記。
<ul id="myUL">
<li>One</li>
<li>Two</li>
.......
.......
</ul>
這里myUL-是頁面加載時已經存在于dom的id。
那么現在如何在jQuery中對這個動態添加的元素實現click事件呢?
Jquery:現在通過使用.on()將能夠在動態添加的HTML標記上綁定click事件,例如給動態添加的li標記綁定click事件。
$('#myUL').on('click','li', function(){
console.log('you clicked me');
});
HTML標記:這里我們有個HTML表,并且動態增加了tr表行,現在我們要使用jQuery .on()方法為動態tr表行綁定click事件。
<table id="myTable">
<tr><td>row 1 col 1</td><td>row 1 col 2</td></tr>
<tr><td>row 2 col 1</td><td>row 2 col 2</td></tr>
..........
..........
</table>
Jquery:這里myTable是我的表id,在每個動態添加的tr上我們可以綁定click事件,如下面的代碼所示。
$('#myTable').on('click','tr', function() {
alert($(this).text());
});
//對div也一樣
//注: .itemName是父div如myDiv里動態添加的class
$('#myDiv').on('hover','.itemName', function() {
alert($(this).text());
});
這里myDiv是父div的id。
我們使用.live(),此方法在1.7已被棄用,在1.9被刪除了。
原型: .live(events, handler)
描述:為現在和將來與當前選擇器匹配的所有元素附加事件處理程序。
$('#myUL li').live('click', function() {
alert('hello!');
});
注意:不再推薦使用.live()方法,因為更高版本的jQuery提供了更好的方法,沒有它的缺點。
