jQuery切换运行两次

时间:2010-09-09 23:03:56

标签: javascript jquery

似乎这段代码:

$(function(){
    $('.show_hide_login').toggle(
    function (){
            alert('show');
            $("div#fullpage").show();
            $("div#loginbox").show();
        },
  function (){
            alert('hide');
            $("div#loginbox").hide();
            $("div#fullpage").hide();
        }
  ); });

当我点击任一链接时(两个,一个是div,一个是锚),任何关于它为什么会运行两次的想法?

4 个答案:

答案 0 :(得分:5)

您对.show_hide_login课程有多少个元素?我猜你有两个。在这种情况下,$('.show_hide_login')结果包含两个元素,并为每个元素执行toggle()

答案 1 :(得分:0)

这不是您的问题的答案,但您可以稍微清理您的代码:

$(function() {
    $('.show_hide_login').toggle(
    function() {
        alert('show');
        $("#loginbox,#fullpage").show();
    }, function() {
        alert('hide');
        $("#loginbox,#fullpage").hide();
    });
});

至于你的实际问题,我怀疑尼克猜到了罪魁祸首。查看此演示,查看两次绑定同一事件的结果:http://jsfiddle.net/9jPLv/

除了在绑定toggle事件之前添加提醒,您还可以添加unbind()并查看是否能解决问题,如下所示:

$('.show_hide_login').unbind().toggle(

如果解决了这个问题,那么切换绑定肯定会运行两次,所以你只需要找出原因。

答案 2 :(得分:0)

我的答案只是一种检查点,我有同样的问题,但出于不同的原因。我确实在基页和子页面中包含了脚本文件。如果您遇到此问题,这会导致切换运行两次,检查脚本是否只添加一次。

答案 3 :(得分:0)

这可能与我遇到的问题相同。

所以如果你有一个带有脚本标签的元素 - 那么你移动那个包含元素或用jquery中的另一个标签包装它 - 然后再次执行jquery中的ready函数 - 从而将第二个toggle函数绑定到你的元素

建议使用$('。show_hide_login')。unbind()。toggle(是一种可行的解决方法,但最好尝试将您的javascript代码移到页面的顶部或底部。