jQuery parent(); function removeClass();不工作(错误)

时间:2015-11-17 04:47:51

标签: javascript jquery class parent

我有一个投资组合,我列出了投资组合项目。 我有课程,所以当你点击该项目时,它有效果。 出于某种原因,当我点击减号按钮时,它不会删除该类' on'。

这是jQuery:

  $('.portfolio-item').click(function() {
    $(this).addClass('on');
  });
  $('.minus').click(function() {
    $(this).closest('.portfolio-item').removeClass('on');
  });

这里是元素设置:

<div class="portfolio-item" style="margin-top: 5px; ">
   <div class="overlay">
      <h1>LOW POLY ISLANDS</h1>
      <h3>LOW POLY</h3>
   </div>
   <div class="about">
      <h1>LOW POLY ISLANDS</h1>
      <h3>LOW POLY</h3>

      <div class="descrip">
         This is a low poly island make in Blender and edited in Photoshop.
      </div>

      <div class="minus"></div>
      <div class="plus"></div>
    </div>
    <img src="https://mir-s3-cdn-cf.behance.net/project_modules/max_1200/57909c29180525.55fc4b1875c26.png" width="100%" />
</div>

我该如何解决这个问题 - 我希望能够删除课程&#39; on&#39;当我点击&#39;减去&#39;。

2 个答案:

答案 0 :(得分:6)

点击minus后,它会删除课程on。但是,与此同时,由于minus位于portfolio-item内,它会触发其click事件并将此类应用回来。

您可以使用e.stopPropagation()禁用此行为。

根据文档, e.stopPropagation

  

阻止事件冒泡DOM树,防止任何父处理程序被通知事件。

这是工作JSFiddle demo。它看起来很糟糕,但演示了功能。

答案 1 :(得分:3)

您需要使用 e.stopPropagation()

$('.minus').click(function(e) {
      e.stopPropagation();
    $(this).closest('.portfolio-item').removeClass('on');
  });

DEMO