遇到問題:
當我獲取 $("#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); });