动画jQuery每次调用仅切换一次

时间:2014-06-26 09:25:52

标签: javascript jquery html ajax

我有一个非常复杂的系统,带有一些AJAX调用,可以将不同的模板呈现给PHP中的其他模板。

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

在用户使用我网站上的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');
});

我不认为有人可以给我一个只有这些信息的解决方案,但这就是我现在可以提供的一切,所以现在我的问题很简单,如果可以从jQuery告诉toggle()函数仅运行每次点击动画。

我不认为jQuery one()可以用于此,因为每次pagevisit只能使用一次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');
});

我只需要再绑定Lister再绑定它,否则它们会卡住,多个Listener会对click事件作出反应!

1 个答案:

答案 0 :(得分:1)

您可能多次绑定Click事件(通过AJAX调用加载javascript)。确保仅将Click处理程序(仅触发toggle())绑定一次。

看一下这个答案:https://stackoverflow.com/a/969011

该答案的A(稍加修改)引用,以供快速参考:

  

function alertEvent() { alert("test"); }

     

$(".ajax").bind("click", alertEvent);

     

//When you want to ensure it won't happen twice...

     

$(".ajax").取消绑定 ("click", alertEvent);

     

$(".ajax").bind("click", alertEvent);

     

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