Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 每次调用仅对jQuery切换设置一次动画_Javascript_Jquery_Html_Ajax - Fatal编程技术网

Javascript 每次调用仅对jQuery切换设置一次动画

Javascript 每次调用仅对jQuery切换设置一次动画,javascript,jquery,html,ajax,Javascript,Jquery,Html,Ajax,我有一个相当复杂的系统,有几个AJAX调用,可以将不同的模板呈现到PHP中的其他模板中 其中一个模板是“我的实体”的编辑表单。此表单隐藏在我的网站中,直到单击一个按钮,该按钮将触发jQuerytoggle(),以将我的网站的一部分切换到此编辑表单 在用户在我的站点上使用jQueryUI滑块之前,这一切都很正常 如果用户在滑块内导航,会发生什么情况?我的站点的某些部分将使用AJAX重新加载 当点击toggle()按钮时,动画会随着滑块的使用而变化(因此,如果滑块使用了4次,则切换将动画切换2个元素

我有一个相当复杂的系统,有几个AJAX调用,可以将不同的模板呈现到PHP中的其他模板中

其中一个模板是“我的实体”的编辑表单。此表单隐藏在我的网站中,直到单击一个按钮,该按钮将触发jQuery
toggle()
,以将我的网站的一部分切换到此编辑表单

在用户在我的站点上使用jQueryUI滑块之前,这一切都很正常

如果用户在滑块内导航,会发生什么情况?我的站点的某些部分将使用AJAX重新加载

当点击
toggle()
按钮时,动画会随着滑块的使用而变化(因此,如果滑块使用了4次,则切换将动画切换2个元素4次)

我通过它进行了调试,没有发现错误,我无法提供一个JSFIDLE来重建情况,也无法访问该站点。click函数只会启动一次,所以我真的无法解释为什么会发生这种情况

值得一提的是,我有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');
});
我不认为有人能用这些信息给我一个解决方案,但这就是我现在能提供的一切,所以我现在的问题是,是否可以告诉jQuery中的
toggle()
函数每次单击只运行一次动画

我不认为jQuery
one()
可以用于此,因为每次页面访问只能使用一次click事件

编辑

根据评论,我尝试了在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');
});

我只需要在再次绑定之前解除绑定侦听器,否则它们将被卡住,多个侦听器将对单击事件做出反应

您可能多次绑定单击事件(通过AJAX调用加载javascript)。确保只绑定一次单击处理程序(触发
切换()

看看这个答案:

该答案中的一段(稍加修改)引语,供快速参考:

函数alertEvent(){alert(“test”);}

$(“.ajax”).bind(“单击”,alertEvent)

//当您想确保它不会发生两次时…

$(.ajax”)。
解除绑定(“单击”,警报事件)

$(“.ajax”).bind(“单击”,alertEvent)

此方法将仅删除您指定的事件


您可能多次绑定Click事件(通过AJAX调用加载javascript)。确保只绑定一次单击处理程序(触发
切换()
)。看看这个答案:似乎是这个问题,我正在将一个字符串记录到控制台中,日志的数量与滑块的使用量相同。但我真的无法修复它,我更新了我的问题,你能帮我吗?我修复了它,谢谢@Doku so!如果你想回答这个问题,我会欣然接受的!:)谢谢你!:)为了找到这个错误,我搜索了几个小时,用以下行修复了它:
$(“#comment_first”).unbind(“click”).click(function(){$('.toggle_information').toggle('slow');})