ページに3つのdivボックスがあります。各divボックスには、コードからdivボックスを削除する削除ボタンがあります。同じイベントのajaxリクエストは、どのdivボックスが押されたかに基づいて一意の番号をサーバーに送信します。削除ボタンで複数のクリックイベントが呼び出されないようにするために、one()イベントを使用しました。ただし、ボタンをすばやくクリックするまれなイベントでは、イベントが2回発生し、データベースが重複した番号を受信したことがわかります。one()はそれが起こらないようにすると思いました。jqueryコードが2回起動するのは何が悪いのでしょうか?私のコードは以下の通りです。
HTMLのサンプルボタン
<input id="delete_post_3" type="button" value="X">
jQueryコード
$('#delete_post_1').one('click', function() {
var session_user_id = <? php echo $session_user_id; ?> ;
var number = 1;
$.post('ajax_delete_post.php', {
user_id: session_user_id,
number: number
}, function() {
$('#post_1').remove();
});
});
$('#delete_post_2').one('click', function() {
var session_user_id = <? php echo $session_user_id; ?> ;
var number = 2;
$.post('ajax_delete_post.php', {
user_id: session_user_id,
number: number
}, function() {
$('#post_2').remove();
});
});
$('#delete_post_3').one('click', function() {
var session_user_id = <? php echo $session_user_id; ?> ;
var number = 3;
$.post('ajax_delete_post.php', {
user_id: session_user_id,
number: number
}, function() {
$('#post_3').remove();
});
});
更新:リクエストごとに、ページ全体のコードについて簡単に説明します。
<script>
//when document is ready, loads jquery code that allows any div boxes that currently
//exist on the page to have a click event that will delete the box. this is the same
//code seen above in my example.
</script>
<form>
//form to fill out info
</form>
<script>
//ajax post sent when form button clicked
$.post('ajax_file.php', {data: data}, function(data){
//in here div box is created
<script>
//duplicated jquery code from top of page. without it the div box delete button does
//not work
</script>
});
</script>