我认为如果我将一个单击功能放入点击功能,它只进行了第二次点击功能,如果它被点击,但是当我点击第一个时,第二个的代码正在运行...我想如果我点击第二个它应该运行代码。 我的意思是当我点击第二个然后代码是可见的,并按照他们应该做的,但如果点击像第一个功能3次而不点击第二个并突然点击第二个,它表现得像代码运行了三次。
$(".click1").click(function () {
alert("hej");
$(".click2").
function ({
alert("bye");
});
});
我的目的是只在第二次点击时才会点击,如果点击第一次点击则不会运行代码!
更清楚。当我点击第一个,它说hej,如果我点击三次然后它会说hej 3x但是当我突然点击click2它显示再见三次但我只点击了一次。
任何人都可以解释为什么会这样吗?以及如何防止这种情况发生?
感谢您的帮助!
EDIT !!
function click_back() {
current_question_for_answer.splice(0,1);
$("#tillbaka_question").fadeTo("slow", 0.2);
$("#tillbaka_question").off("click");
$(".questions").hide();
$(".containing_boxes").show();
$(".answered_box").remove();
var numbers_of_answered_question = history.length - 1;
for (var i = numbers_of_answered_question; i > -1; i--) {
current_question.push(i);
$(".containing_boxes").prepend('<div class="answered_box">'+i+'</div>');
$("div.containing_boxes > div:nth-child("+history.length+")").css("background-color", "green");
$(".containing_boxes").hide();
$(".containing_boxes").fadeIn(100);
}
$("div.containing_boxes > div").not(":last-child").click(answered_box);
$("div.containing_boxes > div:nth-child("+history.length+")").click(function () {
$(“div.containing_boxes&gt; div:nth-child(”+ history.length +“)”)。click(function(){})此功能仅在我点击它时才有效。我无法在两个新函数中分离这段代码。如果我这样做,那么整个系统将停止工作.....
答案 0 :(得分:1)
因为您点击了Click1 3次,所以click2上的点击事件是3x创建的。这就是为什么它会警告'再见'3次。
答案 1 :(得分:1)
第一次点击是附加另一个点击处理程序,这意味着第二次点击将多次点击,因此每次点击它都会得到很多&#34;再见&#34; s。为了避免这种情况,您可以在加载时简单地设置var isClicked = 0
之类的变量,然后在将处理程序附加到click2之前,检查是否为isClicked == 0
,如果为true,则设置为isClicked = 1
,这样它只能运行一次
var isClicked = 0;
$(".click1").click(function () {
alert("hej");
if ( isClicked == 0 ) {
isClicked = 1;
$(".click2").
function ({
alert("bye");
});
}
});
答案 2 :(得分:1)
在绑定新点击事件
之前,您应取消绑定点击事件$(".click1").click(function () {
alert("hej");
$(".click2").unbind('click');
$(".click2").bind('click',function (){
alert("bye");
});
});
答案 3 :(得分:0)
试试这个:
var click1 = false;
$(".click1").click(function () {
alert("hej");
click1 = true;
});
$(".click2").click(function() {
if (click1 === true) {
alert("bye");
click1 = false;
}
});
答案 4 :(得分:0)
我想,他就是你的追求:
$(".click1").click(function () { alert("hej"); });
$(".click2").click(function () { alert("bye"); });
答案 5 :(得分:0)
每次点击第一个按钮,您正在为第二个按钮注册点击事件,所以如果您点击第一个按钮5x,那么第二个按钮点击事件将被注册5x
解决方案就是这样 您确保每次单击第一个按钮时取消注册第二个按钮的单击事件,然后再次注册