点击功能进入点击功能

时间:2014-04-13 18:15:55

标签: javascript jquery click

我认为如果我将一个单击功能放入点击功能,它只进行了第二次点击功能,如果它被点击,但是当我点击第一个时,第二个的代码正在运行...我想如果我点击第二个它应该运行代码。 我的意思是当我点击第二个然后代码是可见的,并按照他们应该做的,但如果点击像第一个功能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(){})此功能仅在我点击它时才有效。我无法在两个新函数中分离这段代码。如果我这样做,那么整个系统将停止工作.....

6 个答案:

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

Live Demo

答案 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

解决方案就是这样 您确保每次单击第一个按钮时取消注册第二个按钮的单击事件,然后再次注册