實際場景
在一個網盤頁面添加新建文件夾,確定后,在頁面里追加元素。如果直接使用click()
或bind()
會出現加載頁面時不存在的元素(也就是后來追加到頁面的元素)沒有綁定點擊事件。
確定新建文件夾
在頁面新生成的文件夾,卻沒有點擊事件,也就是我無法框選它等等。
解決方法
- 使用
.on(events, selector, callback)
解決
events:監聽的事件
selector:綁定事件的元素
callback:事件觸發的回調函數
舉個例子
fileBody.on('click', 'tr', function () {
if (!$(this).hasClass('tr-hover')) {
// 增加選中樣式
$(this).addClass('tr-hover');
$(this).find('span').addClass('tr-click');
i++;
} else {
// 移除選中樣式
$(this).removeClass('tr-hover');
$(this).find('span').removeClass('tr-click');
i--;
}
// 網盤具體功能的顯示隱藏
i > 0 ? $('.btn-group').css('display', '') : $('.btn-group').css('display', 'none');
i > 1 ? $('.newName').addClass('disabled') : $('.newName').removeClass('disabled');
});
其中fileBody
是tr
的父級元素。
- 使用
.live()
解決 不建議已被廢除
感謝小武不殺之恩,為了寫博客,我們又被暴雨困在B9了。