首先,我验证元素的文本是否为“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");
}
});
答案 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(){
...
});
});
希望有所帮助。