Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/74.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语句if/else不使用click函数,运行if和else部分_Javascript_Jquery_If Statement_Logic - Fatal编程技术网

Javascript JQuery语句if/else不使用click函数,运行if和else部分

Javascript JQuery语句if/else不使用click函数,运行if和else部分,javascript,jquery,if-statement,logic,Javascript,Jquery,If Statement,Logic,首先,我验证元素的文本是否为“ocultar菜单”,如果为真,我将更改文本并向其他一些元素添加隐藏类。我的意图是函数在那里中断,只在事件开始时看到文本的值,而在函数内部更改文本时看不到文本的值。但是当我单击一次时,它在浏览器的控制台中显示为隐藏,速度非常快,就像函数检查值并继续检查和传递代码的if和else部分。我使用了StopPropagation(),但不起作用,我尝试将on事件更改为click,但也不起作用。需要帮助,谢谢 var $position = $("#ocult-menu

首先,我验证元素的文本是否为“ocultar菜单”,如果为真,我将更改文本并向其他一些元素添加隐藏类。我的意图是函数在那里中断,只在事件开始时看到文本的值,而在函数内部更改文本时看不到文本的值。但是当我单击一次时,它在浏览器的控制台中显示为隐藏,速度非常快,就像函数检查值并继续检查和传递代码的if和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");
        }
    });

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

希望能有所帮助。

好吧,我在网站上看到,如果我去控制台键入$(“#ocult menu”),点击事件被调用了两次。点击()效果很好

你能发布控制台输出吗?你的HTML标记不清楚,但要注意
$(this)。find('p')。text()
查找所有
元素类型为
#ocult menu
?是一个正在重新加载页面的
a
?如果你能制作一把小提琴来演示这个问题,那会有帮助的。我做了这个,但没用,争论了两次。。。现在我看到在站点的其他部分也发生了这种情况,当我调用ajax时,它会调用两次,我应该怎么做?这是一个点击事件。。。我在内部调用的函数被调用为twice在添加我建议的console.log语句后,您在日志中看到了什么?