ユーザーが文字を入力する検索フィールドがあり、バックグラウンドで ajax スクリプトが検索を実行します。結果は ul-li リストにライブで表示されます。ユーザーは、クラスが「search_list_item」である li をクリックできます。クリックすると、ユーザー名/ID が別の div (msg-receiver div) にコピーされます。
Safari ではすべて正常に動作するため、奇妙な動作をします。Firefox では、#msg_receiver-div でユーザー名が 2 回表示されるため、クリック イベントが 2 回発生するようです。
コードは次のようになります。
$(document).ready(function(){
$('#searchresult').on('click', 'li.search_list_item', function(){
var msg_receiver_content = $('#msg_receiver').html();
$('#msg_receiver').html(msg_receiver_content + ' <li class="single_receiver" id="single_receiver_'+$(this).attr('id')+'">'+$(this).find('span').html()+'</li>');
$('#single_receiver_'+$(this).attr('id')).hide().fadeIn(500);
});
});
コードが FF で 2 回、Safari で 1 回呼び出される理由を知っている人はいますか?検索結果で li を 1 回だけクリックします。
編集: 初期状態では #msg_receiver-div は空ですが、変数にコンテンツが含ま$('#msg_receiver').html(
れる前にステートメントが実行され、変数msg_receiver_content
に後で追加する必要があるコンテンツが含まれているようです...