我该如何处理这些嵌套事件?

时间:2013-05-28 17:01:42

标签: jquery

我遇到嵌套事件的问题

请考虑这是HTML代码:

<button id="first">first button </button>

<button id="second">second button </button>

这是jQuery代码:

$(document).ready(function() {
$('#first').click(function() {
    $('#second').click(function() {
        alert('test');
    });
});

});

单击第一个按钮n次...然后单击第一个按钮一次..警报显示n次。

我想处理这个问题:

点击第一个按钮n次...然后点击第一个按钮一次..警告显示一次

但未使用one()方法

3 个答案:

答案 0 :(得分:0)

你可以这样做 -

var isBind = false;
$('#first').click(function() {
   if(!isBind){
    $('#second').click(function() {
        alert('test');
    });
    isBind = true;
   }
});

答案 1 :(得分:0)

只需使用off()取消绑定事件:

$(document).ready(function() {
    $('#first').click(function() {
        $('#second').off('click').click(function() {
            alert('test');
        });
    });
});

答案 2 :(得分:0)

使用标志(在线程概念中称为锁)。

如:

$(document).ready(function() {
    var clicked = false;
    $('#first').click(function() {
        clicked = true;
    });
    $('#second').click(function() {
         if(clicked){
            alert('test');
            clicked = false;
         }
    });
});

因为第二个事件仅在window.clicked为真时使用。

我知道,这很难看,但是......它很有效,而且很容易理解。 (它支持多个事件监听器,只记得更改对象window的属性名称)