關於jQuery獲取不到動態添加的元素節點的問題


遇到問題:

當我獲取 $("#art-list")頁面元素后去在后面追加標簽的時候(append),在下面用 $(selector) 獲取剛剛添加的標簽,發現怎么都獲取不到。

問題起因:

因為頁面已經將JS加載完畢,此時新增請求動態添加節點,自然獲取不到。

解決方案:

在網上查閱資料后發現動態添加的標簽要事件委托才能獲取到節點,也就是說要用:

$(selector).on(events,[selector],[data],fn)

注意:
1. #art-list 為動態添加節點的父級節點,請使用非動態添加的父級節點,不然同樣獲取不到。
e.g. : 在<div class = "a"></div>中動態添加點擊節點:

<div class="b">
    <a class="c"></a>
</div>

請將父節點委托為 #a 而不能委托為 #b

2. 請委托給直接上級非動態添加節點,不要擴大范圍
還是上面那個例子,正確寫法應為:

$(".a").on('click', '.c', function () {
        alert(123);
});

請不要寫為:

$(div).on('click', '.c', function () {
        alert(123);
});

或者

$('.c').on('click', function () {
        alert(123);
});

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM