在DOM更新后向元素添加事件监听器时遇到了一些麻烦。
我有一些页面,排序两个列表并保存舞台。 我可以通过d& d和点击特殊按钮在这个列表之间移动元素。它对我来说很好。
https://jsfiddle.net/bmj32ma0/2/
但是,我必须保存这个列表的阶段,并且在重新加载后我必须提取阶段,所以我在下面编写代码。
function saveFriendsLists(e) {
if(e.target.classList.contains("b--drugofilter--save-button")){
var vkFriends = document.querySelector('.b--friends-from-vk .js--friends-container').innerHTML;
var choosenFriends = document.querySelector('.b--friends-choosen .js--friends-container').innerHTML;
localStorage.setItem('vkFriends', vkFriends);
localStorage.setItem('choosenFriends', choosenFriends);
}
}
function loadFriensListFromStorage() {
if(localStorage&&localStorage.choosenFriends&&localStorage.vkFriends){
document.querySelector('.b--friends-from-vk .js--friends-container').innerHTML = localStorage.vkFriends;
document.querySelector('.b--friends-choosen .js--friends-container').innerHTML = localStorage.choosenFriends;
}
}
document.addEventListener("DOMContentLoaded", loadFriensListFromStorage);
但添加此功能后,D& D等预览功能无效。我无法为您提供有效的jsfidle,因为我可以理解,localStoradge原因或其他原因。
当我尝试将addEventListener移动到loadFriensListFromStorage函数时,如下所示:
function loadFriensListFromStorage() {
if(localStorage&&localStorage.choosenFriends&&localStorage.vkFriends){
document.querySelector('.b--friends-from-vk .js--friends-container').innerHTML = localStorage.vkFriends;
document.querySelector('.b--friends-choosen .js--friends-container').innerHTML = localStorage.choosenFriends;
}
[].forEach.call(friends, function(friend) {
friend.addEventListener('dragstart', handleDragStart, false);
});
}
但这没有任何效果。
如何解决此问题? THX。