我有一個配置文件列表顯示在一個colorbox窗口中。列表中的每個項目都有一個「+」按鈕,將它們添加到最終列表中。 我添加了一個檢查(if($('#id')。length == 0))來檢查元素是否已經在最終列表中,並防止它在列表中添加兩次。刪除在colorbox中動態創建的元素
當第一次加載colorbox時,一切正常。但是當colorbox關閉並重新打開時,if條件失敗,因爲該元素沒有在$ .colorbox.close事件上被銷燬。元素仍然存在於文檔中,但不會顯示在colorbox窗口中,因爲內容已從外部網址重新加載。即使當「最終列表」爲空時,這也會向我顯示「此成員已經在列表中」的提示框。在最終名單中添加
$(document).on('click', "a.add_to_list", function() {
var new_id = 'final_'+$(this).data('id');
var html = '<li id="'+new_id+'"><a data-id="'+new_id+'" class="remove label label-important right "><i class="icon-minus icon-white"></i></a>' + $('#'+id).html() + '</li>';
if($('#'+new_id).length == 0) {
$('#final_list').append(html);
}
else
{
alert('This Member is already in the list');
}
});
$(document).on('click', "a.remove", function() {
remove_id = $(this).data('id');
$('#'+remove_id).remove();
});
HTML
<ul id="list1"><li id="user1"><a class="right add_to_list label label-important" data-id="'user1'"><i class="icon-plus icon-white"></i></a><a href="http://localhost/test/profile/user1" class="align-left">
<img width="60px" height="60px" src="http://localhost/test/files/profile_img/user1.jpg" class="avatar photo"></a><p>User 1</a><br>@user1<br>Description</p></li></ul>
元素
<ul id="final-list"><li id="final-user1"><a class="right remove label label-important" data-id="final_user1"><i class="icon-plus icon-white"></i></a><a href="http://localhost/test/profile/user1" class="align-left">
<img width="60px" height="60px" src="http://localhost/test/files/profile_img/user1.jpg" class="avatar photo"></a><p>User 1</a><br>@user1<br>Description</p></li></ul>
現在我要摧毀colorbox.close事件的元素,使它們不應該是出現在文檔中時,第二次打開彩盒。 我試着將colorbox.close事件的執行從close()方法改爲remove()方法。 它完成了這項工作,但它刪除了完整的colorbox元素,這會阻止在重新加載頁面之前再次打開colorbox。
該問題已通過使用第一個選項解決,可以將代碼添加到colorbox的onComplete選項之外,從而防止兩次加載jquery代碼。 –