カラーボックス ウィンドウに表示されるプロファイルのリストがあります。リスト内の各アイテムには、それらを最終リストに追加するための「+」ボタンがあります。チェック (if($('#id').length == 0)) を追加して、要素が既に最終リストにあるかどうかを確認し、リストに 2 回追加されないようにしました。
カラーボックスが初めて読み込まれると、すべてが正常に機能します。ただし、カラーボックスを閉じて再度開くと、要素が $.colorbox.close イベントで破棄されなかったため、if 条件が失敗します。要素はドキュメント内にまだ存在しますが、コンテンツが外部 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 イベントで要素を破棄して、カラーボックスが 2 回目に開かれたときにドキュメントに存在しないようにします。colorbox.close イベントの実行を close() メソッドから remove() メソッドに変更してみました。それは仕事をしましたが、完全なカラーボックス要素を削除します。これにより、ページをリロードするまでカラーボックスを再度開くことができなくなります。