我在颜色框窗口中显示了配置文件列表。列表中的每个项目都有一个“+”按钮,可以将它们添加到最终列表中。我添加了一个检查 (if($('#id').length == 0)) 来检查元素是否已经在最终列表中,并防止它在列表中添加两次。
第一次加载颜色框时一切正常。但是当 colorbox 关闭并重新打开时,if 条件失败,因为元素没有在 $.colorbox.close 事件上被破坏。该元素仍然存在于文档中,但不会显示在颜色框窗口中,因为内容已从外部 url 重新加载。即使“最终列表”为空,这也会向我显示“此成员已在列表中”的警报框。
$(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() 方法。它完成了这项工作,但它删除了完整的颜色框元素,这会阻止再次打开颜色框,直到您重新加载页面。