在多个类上使用.one()

时间:2016-11-08 13:55:15

标签: jquery click

我有多个具有相同类名的div,但是一旦点击了一个,如果再次点击同一个类,我不希望我的功能再次发生。

$('.js-item').one( "click", function() {
    console.log('clicked once');
    // do something only once even if a div with the same class is clicked again
});

.one()是否有办法在我的所有课程中只发生一次?因为目前只应用一次,但每次点击具有该类名的单个div。

我需要这些div具有相同的类名。

2 个答案:

答案 0 :(得分:2)

执行逻辑后,您可以在所有这些类上调用off()

$('.js-item').one("click", function() {
  console.log('clicked once');

  // do something only once even if a div with the same class is clicked again

  $('.js-item').off('click');
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="js-item">click me!</div>
<div class="js-item">click me!</div>
<div class="js-item">click me!</div>
<div class="js-item">click me!</div>
<div class="js-item">click me!</div>

使用此方法会使one()变得多余,因此如果您愿意,可以恢复为标准on()

答案 1 :(得分:0)

$('.js-item').on( "click", function() {
    var $this = $(this);
    $('.js-item').removeClass('classAdded');
    $this.addClass('classAdded');
});

你可以这样欺骗。