JS獲取動態(tài)添加元素的方法詳解
本文實例講述了JS獲取動態(tài)添加元素的方法。分享給大家供大家參考,具體如下:
在頁面的渲染中,我們經(jīng)常用遇到動態(tài)添加的DOM元素,那么在獲取這些元素的時候或則為這些DOM元素的時候,我們有下面三種處理方法:
- 1. 在模板引擎里面添加行內(nèi)事件
- 2. 利用事件的委托獲取(常用)
- 3. 在ajax的監(jiān)聽響應(yīng)完成函數(shù)后面獲取
一 在模板引擎里面添加行內(nèi)事件
添加行內(nèi)事件就是在標(biāo)簽里面添加事件,這樣就可以直接獲取到動態(tài)添加的元素.
<!-- 1.準(zhǔn)備一個模板 -->
<script id="tpl-table" type="text/html">
{{ each rows value key }}
<tr>
<td>
<button type="button" onclick="updateUser({{ value.id }} {{@ ','}} {{value.isDelete}})" id="btn-status" >按鈕</button>
</td>
</tr>
{{ /each }}
</script>
//事件函數(shù),書寫在單獨的JS文件中
//帶有參數(shù),參數(shù)是模板傳遞過來的
function updateUser (id,isDelete){
//doSomething.........
}
上面使用的模板是art-template,在模板里面我們給button標(biāo)簽注冊了點擊事件onclick,但是事件函數(shù)卻是一個帶參數(shù)的函數(shù).當(dāng)點擊這個按鈕的時候,就會觸發(fā)點擊事件,進(jìn)而調(diào)用updateUser()函數(shù).
二. 利用事件的委托獲取(常用)
事件的委托可以為動態(tài)添加的元素綁定事件.
//同樣以上面的代碼為例,tr最后是添加到table中,那么將點擊事件委托給table
$('table').on('click','tr #btn-status',function(){
//doSomething........
})
上面的代碼意思是,將點擊事件綁定給table元素,但是我們點擊的是table里面的button按鈕,此時事件的冒泡起作用,向外冒泡遇到父元素table也有點擊事件,那么就會去執(zhí)行這個事件.
三 在ajax的監(jiān)聽響應(yīng)完成函數(shù)后面獲取
當(dāng)我們把模板渲染出來的時候,此時頁面上已經(jīng)是最新的動態(tài)元素了,DOM也已經(jīng)重繪完成,此時再去獲取動態(tài)元素.
$.ajax({
url : 'text.php',
dataType : 'json',
success : function(obj){
//渲染動態(tài)元素到頁面上
var trHTML = template('tpl-table',obj);
$('table').append(trHTML);
//獲取動態(tài)元素注冊點擊事件
$('tr #btn-status').on('click',function(){
//doSomething........
});
}
})
四 總結(jié):
第一種方法要注意事件函數(shù)必須是全局函數(shù);第二種最常用,但是三者的共同點都是當(dāng)頁面已經(jīng)渲染完畢后才能獲取到動態(tài)元素.
感興趣的朋友可以使用在線HTML/CSS/JavaScript代碼運行工具:http://tools.jb51.net/code/HtmlJsRun測試上述代碼運行效果。
更多關(guān)于JavaScript相關(guān)內(nèi)容可查看本站專題:《JavaScript操作DOM技巧總結(jié)》、《JavaScript頁面元素操作技巧總結(jié)》、《JavaScript事件相關(guān)操作與技巧大全》、《JavaScript查找算法技巧總結(jié)》、《JavaScript數(shù)據(jù)結(jié)構(gòu)與算法技巧總結(jié)》、《JavaScript遍歷算法與技巧總結(jié)》及《JavaScript錯誤與調(diào)試技巧總結(jié)》
希望本文所述對大家JavaScript程序設(shè)計有所幫助。
相關(guān)文章
Javascript 創(chuàng)建類并動態(tài)添加屬性及方法的簡單實現(xiàn)
下面小編就為大家?guī)硪黄狫avascript 創(chuàng)建類并動態(tài)添加屬性及方法的簡單實現(xiàn)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-10-10
詳解JS中continue關(guān)鍵字和break關(guān)鍵字的區(qū)別
在javascript中continue的作用是退出當(dāng)前次循環(huán),break的作用則是一旦當(dāng)前循環(huán)有break那么直接退出整個循環(huán)。本文將通過一些示例為大家詳細(xì)講講二者的區(qū)別,感興趣的可以了解一下2022-08-08
基于Javascript實現(xiàn)文件實時加載進(jìn)度的方法
不知道大家有沒有發(fā)現(xiàn)在現(xiàn)在的移動頁面上,有很多情況需要加載大量的資源。但是移動端的訪問速度和pc還是有很大的差距,有些時候需要一些取巧的方式來提升用戶體驗,而實時顯示加載進(jìn)度就是其中一種。這篇文章就給大家分享了Javascript實現(xiàn)文件實時加載進(jìn)度的方法。2016-10-10
前端JavaScript數(shù)組方法總結(jié)(非常詳細(xì)!)
這篇文章主要介紹了JavaScript中數(shù)組對象的常用方法,包括數(shù)組的基本操作、查找、過濾、排序、遍歷等方法,并提供了每個方法的語法和示例,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2025-04-04
javascript實現(xiàn)計算指定范圍內(nèi)的質(zhì)數(shù)示例
這篇文章主要介紹了javascript實現(xiàn)計算指定范圍內(nèi)的質(zhì)數(shù),涉及javascript數(shù)值計算與判斷相關(guān)操作技巧,需要的朋友可以參考下2018-12-12
使用JS的DOM文檔對象模型獲取前端循環(huán)的參數(shù)
這篇文章主要介紹了使用JS的DOM(文檔對象模型)獲取前端循環(huán)的參數(shù),本文結(jié)合實例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下2023-02-02

