-1

我对嵌套事件有疑问

考虑这是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()方法

4

3 回答 3

0

你可以这样做 -

var isBind = false;
$('#first').click(function() {
   if(!isBind){
    $('#second').click(function() {
        alert('test');
    });
    isBind = true;
   }
});
于 2013-05-28T17:03:37.573 回答
0

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

$(document).ready(function() {
    $('#first').click(function() {
        $('#second').off('click').click(function() {
            alert('test');
        });
    });
});
于 2013-05-28T17:03:43.653 回答
0

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

例如:

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

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

我知道,这很丑陋,但是..它有效并且很容易理解。(并且它支持多个事件监听器,只要记住更改对象的属性名称即可window

于 2013-05-28T17:06:11.477 回答