如何等到内部功能?

时间:2014-04-23 07:41:42

标签: javascript jquery events javascript-events

我正在使用Javascript / jQuery进行一些初学者编码并遇到问题。长话短说:

  1. 我在页面上有一个元素,应该忽略任何点击;
  2. 一旦调用了特定功能,它应该等到n次点击;
  3. 函数应该执行一些代码;
  4. 完成所有后,元素应该再次忽略点击。
  5. 我尝试使用setInterval()/ clearInterval(),但没有成功。

    请帮帮我:)。

    P.S。:一种方法是使用新代码重新加载页面,但不适合我的情况。

    UPD:

    var select = function() {
        /*once called this function should enable clicks on <td>
        toggling its class to yellow and once both cells are yellow
        clicking should be disabled*/
    };
    
    $(document).ready(function(){
        $("button[name=start]").click(function(){
            select();
        });
    }); 
    

    http://jsfiddle.net/superiorbanana/Z53EU/。希望这一小段代码能够澄清这个想法。

4 个答案:

答案 0 :(得分:1)

只需存储变量中的点击次数,然后使用javascript进行检查即可。像这样:

var x = 0;

$('#button').click(function(){
   x++;
    if (x == 5) {
        alert("hello");
    }
});

fiddle

答案 1 :(得分:1)

我不确定你是否在寻找这个,

<强> HTML

<span class="one">click disabled</span>
<br/>
<span class="two">enable click</span>

<强> jquery的

var count=0;
$(".two").click(function(){
    $(".one").text("click enabled");
    $(".one").click(function(){
        count++;
        if(count==5)
        {
            $(".one").text("click disabled");
            $(".one").off("click");

        }
    alert("click enabled");
    });

});

Fiddle demo

在上面的代码中,单击第一个跨度的单击事件将不会触发,直到单击第二个跨度为止。仅在单击第二个跨度后绑定第一个跨度的单击事件。 还有一个点击计数器。当计数器达到限制时,将使用off()

删除第一个范围的点击事件

答案 2 :(得分:1)

我认为您正在寻找jQuery的onoff方法。

使用on绑定点击处理程序,然后在完成后将其设为off。因此,在您的情况下,您可以在触发后立即关闭点击处理程序。例如:

$(document).ready(function () {
    var $tds = $('td'), // store td's
        count = $tds.length; // store # of td's
    $("button[name=start]").on('click', function (e) {
        // pass `e` so that it can be used to turn itself off
        $(this).off(e); // this function won't execute again

        // bind td clicking after button's clicked
        $tds.on('click', function (e) {
            $(this).addClass('clicked').off(e); // executed once per td

            // the if statement and the count is actually 
            // not necessary; it's just to demonstrate 
            // that all the click handlers have ended.

            count--; // count - 1                
            if (count === 0) {
                console.log('there are no more click handlers');
            }
        });
    });
});

或者只是

$(document).ready(function () {
    $("button[name=start]").on('click', function (e) {
        $(this).off(e);
        $('td').on('click', function (e) {
            $(this).addClass('clicked').off(e);
        });
    });
});

查看jsfiddle上的代码。

答案 3 :(得分:0)

您应该在开头设置事件侦听器以侦听该元素上的任何click事件。

  

一旦调用特定功能,它应该等到n次点击;

“特定功能”可以将变量设置为“true”,之前为false。这就是click事件侦听器正在等待的内容。一旦变量为真,计数器变量就可以计算点击次数

  

n次点击;

计数器达到所需的点击次数后,您可以执行任何操作:

if(counter === n) {
    executeMe();
    counter = 0;
}

如果间隔始终相同,您也可以使用“mod”。