gpt4 book ai didi

jquery - One() 不支持 AJAX?

转载 作者:行者123 更新时间:2023-12-03 22:27:48 24 4
gpt4 key购买 nike

我的页面上有三个 div 框在每个 div 框中都有一个删除按钮,按下该按钮可以从代码中删除 div 框。同一事件中的 ajax 请求会根据按下的 div 框向服务器发送一个唯一的编号。为了防止在删除按钮上调用多个单击事件,我使用了 one() 事件。但在极少数情况下,我快速单击按钮,它会触发事件两次,并且我看到数据库收到了重复的数字。我认为 one() 可以防止这种情况发生。我的 jquery 代码有什么问题导致它触发两次?我的代码如下。

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>

最佳答案

我不知道这个问题是否已解决,但考虑到评论中的所有反馈,您似乎正在绑定(bind) one两次,它似乎也是基于您在 user23875 中留下的评论的回答表明您已经意识到这一点。

如果你绑定(bind)事件两次,它就会执行两次,就这么简单。

如果您完全意识到您绑定(bind)了两次事件,为什么不首先尝试取消绑定(bind)任何先前附加的事件。

$('#delete_post_1').off('click').one('click', function() {
...
$('#delete_post_2').off('click').one('click', function() {
...
$('#delete_post_3').off('click').one('click', function() {

除非您还重新渲染完整的 HTML 两次,否则上述内容将确保您只附加了一次点击事件。

user23875已经指出,您肯定在脚本中做了一些时髦的事情。

您应该尽可能地分离代码,以确保您只想运行的代码只会被调用,依此类推。

希望以上内容能够解决此问题。

关于jquery - One() 不支持 AJAX?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12467033/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com