0

首先,我验证元素的文本是否为“ocultar menu”,如果是,我更改文本并将隐藏类添加到其他一些元素。我的意图是该函数在那里中断,并且仅在事件开始时查看文本的值,而当我在函数内部更改它时则看不到。但是当我单击一次时,它在浏览器的控制台中显示为隐藏,非常快,就像函数检查值并继续检查并传入 if 和 else 部分代码。我使用了 StopPropagation() 但不起作用,我尝试将 on 事件更改为单击但也不起作用。需要帮助,谢谢。

   var $position = $("#ocult-menu").position();
    $("#ocult-menu").on("click",function(){ 
        var $text = $(this).find('p').text();
        if ($text == "ocultar menu"){
            $(".info").addClass("hide");
            $(".photo").addClass("hide");
            $(".map").addClass("hide");
            $(".similar").addClass("hide");
            $(".share").addClass("hide");
            $("#menu-single").offset({left: $position.left});
            $(".exibir").css("background-position","-1px 430px");
            $(this).find('p').text("exibir menu");
        }
        else if( $text == "exibir menu"){
            $(".info").removeClass("hide");
            $(".photo").removeClass("hide");
            $(".map").removeClass("hide");
            $(".similar").removeClass("hide");
            $(".share").removeClass("hide");
            $("#menu-single").offset({left: $position.left});
            $(this).find('p').text("ocultar menu");
        }
    });
4

2 回答 2

1

好吧,我在网站上看到点击事件被调用了两次,如果我去控制台并输入 $("#ocult-menu").click() 效果很好

于 2013-11-08T18:21:03.867 回答
1

您可能会多次添加 onclick 处理程序,导致每次单击执行多次。尝试添加一些日志语句,如下所示:

$("#ocult-menu").on("click",function(){ 
    console.log("onclick");
    ...
    if ($text == "ocultar menu"){
        console.log("text = ocultar menu");
        ...
    }
    else if( $text == "exibir menu"){
        console.log("text = exibir menu");
        ...
    }
});

如果您看到多次记录“onclick”,那就是问题所在。然后,您可以将此处理程序设置代码移动到您的初始一次性页面加载函数。

$(function() {
    $("#ocult-menu").on("click",function(){
        ...
    });
});

希望有帮助。

于 2013-09-17T17:22:43.713 回答