jquery click事件被多次执行?

用jquery绑定一个按钮click事件后,第一次点击后,一切正常,第二次点击,竟然执行两次,以后越来越多。
后来查看文档发现  jquery click  不是替换原有的function ,而是接着添加,所以才会执行次数越来越多。 这有就可以在添加之前先将按钮click函数置空,然后再添加。
解绑定方法   $("...").unbind('click');

自 jQuery 版本 1.7 起,on() 和 off() 方法是在元素上添加和移除事件处理程序的首选方法。

所以也可以写成:

$("...").off("click").on("click",onXXXClick);



在JQM中,如果要对一个按钮添加事件,最好写在pagebeforecreate或pagecreate中,而不要写在"pagebeforeshow"或"pageshow"中。
原因:如果把事件的绑定写在"pageshow"中,因为"pageshow"每次页面显示的时候都会触发,所以这样当一个页面多次显示的时候就会造成一个事件绑定多次的情况。
在使用jQuery和Bootstrap框架开发网页时,我们可能会遇到在模态框中多次触发同一事件导致多个Ajax请求被同时发送的情况。为了防止这种情况发生,我们可以在发送Ajax请求前对模态框进行一些控制,以阻止用户在等待Ajax响应时重复触发事件。 一个常见的做法是使用Bootstrap提供的数据属性来控制模态框的状态。在打开模态框前,可以通过设置模态框的`data`属性来标记已经打开,然后在Ajax请求结束后清除这个状态。这样,当用户尝试再次触发事件时,我们可以通过检查这个标记来决定是否需要执行后续操作。 以下是一个简单的示例代码: ```javascript // 假设这是一个触发模态框的按钮的点击事件处理函数 $('#myButton').on('click', function () { // 检查模态框是否已经打开 if ($('#myModal').data('is-opening')) { return; // 如果已经打开,则不执行后续操作 } // 标记模态框正在打开 $('#myModal').data('is-opening', true); // 显示模态框 $('#myModal').modal('show'); // 发送Ajax请求 $.ajax({ url: 'your-endpoint-url', method: 'POST', // ...其他ajax选项 success: function (response) { // 处理成功的响应 // ... // 清除标记 $('#myModal').data('is-opening', false); }, error: function (xhr) { // 处理错误情况 // ... // 清除标记 $('#myModal').data('is-opening', false); } }); }); ``` 在上面的示例中,我们使用了`data('is-opening')`来检查模态框是否正在打开。这是一个简单的标志位,你可以根据实际情况进行调整或扩展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值