JQuery语句if / else不能处理click函数,运行if和else部分

时间:2013-09-17 17:04:15

标签: javascript jquery if-statement logic

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

   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");
        }
    });

2 个答案:

答案 0 :(得分:1)

好吧,我在网站上看到点击事件被调用两次,如果我去控制台并输入$(“#ocult-menu”)。click()它运作良好

答案 1 :(得分:0)

您可能会多次添加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(){
        ...
    });
});

希望有所帮助。