每次调用只切换一次jQuery动画
Animate jQuery toggle only once per call
我有一个非常复杂的系统,其中有几个AJAX调用,可以将不同的模板呈现为PHP中的其他模板。
其中一个模板是我的实体的编辑表单。这个表单被隐藏在我的网站中,直到点击一个按钮,然后触发一个jQuerytoggle()
,将我的网站的一部分切换到这个编辑表单。
这个工作很好,直到用户使用jQuery UI滑块在我的网站。
如果用户在滑块内导航,我的站点的某些部分将被AJAX重新加载。
当toggle()
的按钮被点击时,动画就会像滑块被使用一样频繁(所以如果滑块被使用了4次,切换将动画切换出2个元素4次)。
我调试了它,找不到错误,我不能提供一个可以重建情况的jsFiddle,也不能访问该网站。点击功能只会触发一次,所以我真的无法解释为什么会发生这种情况。
值得一提的是,我有3个按钮将触发此事件:
#poi_edit_ajax
将在模板中使用滑块时显示,该滑块将按AJAX呈现。
#poi_edit_first
将在第一次访问站点时显示,并且每个AJAX都没有重新加载任何内容。
#poi_edit_last
,以便用户可以从编辑视图返回
Javascript如下:
$("#poi_edit_ajax").click(function(){
$(".toggle_edit").toggle('slow');
});
$("#poi_edit_first").click(function(){
$(".toggle_edit").toggle('slow');
});
$("#poi_edit_last").click(function(){
$(".toggle_edit").toggle('slow');
});
我不认为有人可以给我一个解决方案,只是这个信息,但这是我现在可以提供的一切,所以我的问题现在是简单的,如果有可能告诉toggle()
函数从jQuery只运行动画一次点击。
我不认为jQuery one()
可以用于此,因为点击事件只能在每次页面访问中使用一次。
编辑
根据注释,我尝试了是否在AJAX调用中注册多个事件处理程序,这是正确的。
解决这个问题的代码很简单:$("#comment_first").unbind("click").click(function(){
$('.toggle_information').toggle('slow');
});
$("#comment_last").unbind("click").click(function(){
$('.toggle_information').toggle('slow');
});
$("#comment_ajax").unbind("click").click(function(){
$('.toggle_information').toggle('slow');
});
我只需要在再次绑定之前取消绑定listener,否则它们会卡住,多个listener会对click事件做出反应!
您可能多次绑定Click事件(通过AJAX调用加载javascript)。确保只绑定一次Click处理程序(它会触发toggle()
)。
看看这个答案:https://stackoverflow.com/a/969011
(稍作修改)引用该回答,供快速参考:
function alertEvent() { alert("test"); }
$(".ajax").bind("click", alertEvent);
//When you want to ensure it won't happen twice...
$(".ajax").
unbind("click", alertEvent);
$(".ajax").bind("click", alertEvent);
此方法将只删除您指定的事件
- jQuery:试图让动画每3秒发生一次,但没有成功
- jQuery+Animate.css动画只工作一次,动画不会重置
- HTML画布-使动画一次发生一个,而不是同时发生多个
- 为jquery设置动画,一次设置一个对象
- 菜单在每单击一次时切换不同的动画
- jQuery - 在一个会话中仅运行一次动画
- 如何一次为多个事物设置动画
- CSS 动画只工作一次
- 如何阻止 CSS3 动画在播放一次后运行并调用新动画
- 如何让动画在视口中启动一次
- 一次对一个进度条进行动画处理
- jQuery 动画运行一次
- 动画 GIF 背景仅显示一次
- 为什么单击时的关键帧动画只触发一次
- 每次单击一次迭代两个数组并制作动画
- 在滚动时制作一次动画
- JavaScript动画,图像动画只动画一次
- 每3秒重复一次动画
- 在单击按钮时使用同位素对数据进行排序,目前只运行一次动画
- ScrollMagic Tween:向前只播放一次动画