2

我有一些代码html:

    <button>click 1</button>
    <button>click 2</button>

和 jQuery 代码:

    jQuery(document).ready(function(){
        $("button").click(function(){
            console.log('yeah');
            $(this).siblings().on('click');
            $(this).off('click');
        });
    });

我希望的东西:

  • 首先,单击按钮 1“是”
  • 二,再次点击按钮1,没有任何反应
  • 按钮 1(不是按钮 2)再次说“是”会很高兴,只有当我单击按钮 2然后回来单击按钮 1

它也是一样的,而不是第一个,我点击按钮 2
但我想知道为什么它不起作用。

4

1 回答 1

2

您可能正在寻找这个:-

$(document).ready(function(){
        $("button").on('click', handleClick);
    });
function handleClick()
{
     $(this).siblings().on('click', handleClick);
     $(this).off('click');
     console.log('yeah');
}

小提琴

另一种方法是利用one

 $(document).ready(function(){
    $("button").one('click', handleClick);
});
function handleClick(e)
{
    e.stopImmediatePropagation();
     $(this).siblings().one('click', handleClick);
     console.log('yeah');
}

更新以避免多次点击附加: -

小提琴

$(document).ready(function () {
    $("button").on('click', handleClick);
});

function handleClick(e) {
    $(this).off('click').siblings().off('click').on('click', handleClick); //turn off the handler attached to the siblings (during initial load) before attaching it again.

    console.log('yeah');
}
于 2013-05-26T08:01:31.913 回答