禁用单击此按钮

时间:2014-12-28 11:53:02

标签: javascript jquery

我正在尝试仅对具有类

的当前项目禁用click事件
$(document).on( 'click', '.item', function() {
  $(".item").removeClass('is-expanded');
  $(this).addClass('is-expanded');
  $(".item").each(function(){   
    $(".item").click(true).css("cursor", "pointer");
    $(".is-expanded").click(false).css("cursor", "default");
  });

但是,我仍然可以点击课程.is-expanded上的项目,但不应该点击所有其他没有该课程的项目

3 个答案:

答案 0 :(得分:2)

如果我理解你的逻辑,你想要:

$(document).on( 'click', '.item:not(.is-expanded)', function() {
    $(".item").removeClass('is-expanded');
    $(this).addClass('is-expanded');
});

并将光标设置在CSS中,如你所愿:

.item {
   cursor: pointer;
}

.item.is-expanded {
   cursor: default;
}

答案 1 :(得分:1)

使用on()方法时,您将检测链接到该方法的元素或其他命名事件,并查看其来源。一旦偶数已经冒出来,就无法阻止(因为它已经发生了)。

但是,您可以将事件监听器附加到元素本身,并评估当前类:

$('.item').click(function(){
    if ($(this).hasClass('is-expanded')) {
        return false;
    }
    else {
        // do whatever
    }
});

答案 2 :(得分:0)

如果我理解,你需要解开

http://api.jquery.com/unbind/

$('.item').click(function() {
  $(".item").removeClass('is-expanded');
  $(this).addClass('is-expanded').unbind('click');
});

如果你需要ricovery点击,而不是:

$( document ).ready(function() {
  $('.item').click(function() {
    if ($(this).hasClass('is-expanded')) {
      return false;
    } else {
      $(".item").removeClass('is-expanded');
      $(this).addClass('is-expanded');
    }
  });
});

http://embed.plnkr.co/c8WUE2iH1iKuJBvW8OG6/preview