首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从子元素中删除最接近的元素单击按钮

从子元素中删除最接近的元素单击按钮
EN

Stack Overflow用户
提问于 2017-05-04 08:10:27
回答 1查看 79关注 0票数 0

我有下一个标记结构:

代码语言:javascript
复制
$(function() {
  $('#condition-container').on('click', '.component-delete', function() {
    var component = $(this).parents('.workflow-component');
    component.closest('.hr').remove(); //Delete nothing
    //component.siblings('.hr').remove();//delete all hr but I need to delete only closest
    component.remove();
  });
});
代码语言:javascript
复制
.widget-box {
  padding: 0;
  -webkit-box-shadow: none;
  box-shadow: none;
  margin: 3px 0;
  border: 1px solid #CCC;
}

.widget-box .widget-header {
  padding-right: 10px !important;
  padding-left: 10px !important;
}

.widget-header {
  padding: 0 !important;
  padding-left: 10px !important;
}

.widget-header {
  -webkit-box-sizing: content-box;
  -moz-box-sizing: content-box;
  box-sizing: content-box;
  position: relative;
  min-height: 38px;
  background: #f7f7f7 repeat-x;
  background-image: -webkit-linear-gradient(top, #fff 0, #eee 100%);
  background-image: -o-linear-gradient(top, #fff 0, #eee 100%);
  background-image: linear-gradient(to bottom, #fff 0, #eee 100%);
  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffeeeeee', GradientType=0);
  color: #669fc7;
  border-bottom: 1px solid #DDD;
  padding-left: 12px;
}

.widget-body {
  background-color: #FFF;
}

.widget-toolbox {
  background-color: #EEE;
}

.widget-toolbox.padding-8 {
  padding: 8px;
}

.widget-toolbox:last-child {
  padding: 2px;
  border-top: 1px solid #CCC;
}

.widget-main {
  padding: 12px;
}

.hr {
  display: block;
  height: 0;
  overflow: hidden;
  font-size: 0;
  border-width: 1px 0 0;
  border-top: 1px solid #E3E3E3;
  margin: 12px 0;
  border-top-color: rgba(0, 0, 0, .11);
}

.hr-dotted,
.hr.dotted {
  border-style: dotted;
}

.hr-18,
.hr18 {
  margin: 18px 0;
}

.hr:nth-child(3n) {
  border-color: red
}

.hr:nth-child(3n+1) {
  border-color: green
}

.hr:nth-child(3n+2) {
  border-color: blue
}
代码语言:javascript
复制
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet" />
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="condition-container">
  <div class="widget-box workflow-component">
    <div class="widget-header"></div>
    <div class="widget-body">
      <div class="widget-main"></div>
      <div class="widget-toolbox padding-8 clearfix">
        <button type="button" class="btn btn-xs btn-danger component-delete"><i class="ace-icon fa fa-times"></i><span class="bigger-110">Delete</span></button>
      </div>
    </div>
  </div>
  <div class="hr hr-18 dotted"></div>
  <div class="widget-box workflow-component">
    <div class="widget-header"></div>
    <div class="widget-body">
      <div class="widget-main"></div>
      <div class="widget-toolbox padding-8 clearfix">
        <button type="button" class="btn btn-xs btn-danger component-delete"><i class="ace-icon fa fa-times"></i><span class="bigger-110">Delete</span></button>
      </div>
    </div>
  </div>
  <div class="hr hr-18 dotted"></div>
  <div class="widget-box workflow-component">
    <div class="widget-header"></div>
    <div class="widget-body">
      <div class="widget-main"></div>
      <div class="widget-toolbox padding-8 clearfix">
        <button type="button" class="btn btn-xs btn-danger component-delete"><i class="ace-icon fa fa-times"></i><span class="bigger-110">Delete</span></button>
      </div>
    </div>
  </div>
  <div class="hr hr-18 dotted"></div>
  <div class="widget-box workflow-component">
    <div class="widget-header"></div>
    <div class="widget-body">
      <div class="widget-main"></div>
      <div class="widget-toolbox padding-8 clearfix">
        <button type="button" class="btn btn-xs btn-danger component-delete"><i class="ace-icon fa fa-times"></i><span class="bigger-110">Delete</span></button>
      </div>
    </div>
  </div>
  <div class="hr hr-18 dotted"></div>
  <div class="widget-box workflow-component">
    <div class="widget-header"></div>
    <div class="widget-body">
      <div class="widget-main"></div>
      <div class="widget-toolbox padding-8 clearfix">
        <button type="button" class="btn btn-xs btn-danger component-delete"><i class="ace-icon fa fa-times"></i><span class="bigger-110">Delete</span></button>
      </div>
    </div>
  </div>
  <div class="hr hr-18 dotted"></div>
  <div class="widget-box workflow-component">
    <div class="widget-header"></div>
    <div class="widget-body">
      <div class="widget-main"></div>
      <div class="widget-toolbox padding-8 clearfix">
        <button type="button" class="btn btn-xs btn-danger component-delete"><i class="ace-icon fa fa-times"></i><span class="bigger-110">Delete</span></button>
      </div>
    </div>
  </div>
</div>

问题是,我希望通过单击按钮Delete删除最接近的.hr块,但在第一种情况下,它不删除任何东西,而在另一种情况下,它删除所有.hr块。

预期行为:

  1. 如果我单击第二个或另一个块的Delete按钮,它必须删除第一个上块.hr
  2. 如果我点击第一个元素,必须删除下一个.hr块。

如何根据示例中的代码实现这种行为?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-05-04 08:12:25

您需要使用.next()来跟踪兄弟姐妹。.closest()方法从自身开始遍历。

代码语言:javascript
复制
component.next('.hr').remove();

代码语言:javascript
复制
$(function() {
  $('#condition-container').on('click', '.component-delete', function() {
    var component = $(this).parents('.workflow-component');
    component.next('.hr').remove(); 
    component.remove();
  });
});
代码语言:javascript
复制
.widget-box {
  padding: 0;
  -webkit-box-shadow: none;
  box-shadow: none;
  margin: 3px 0;
  border: 1px solid #CCC;
}

.widget-box .widget-header {
  padding-right: 10px !important;
  padding-left: 10px !important;
}

.widget-header {
  padding: 0 !important;
  padding-left: 10px !important;
}

.widget-header {
  -webkit-box-sizing: content-box;
  -moz-box-sizing: content-box;
  box-sizing: content-box;
  position: relative;
  min-height: 38px;
  background: #f7f7f7 repeat-x;
  background-image: -webkit-linear-gradient(top, #fff 0, #eee 100%);
  background-image: -o-linear-gradient(top, #fff 0, #eee 100%);
  background-image: linear-gradient(to bottom, #fff 0, #eee 100%);
  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffeeeeee', GradientType=0);
  color: #669fc7;
  border-bottom: 1px solid #DDD;
  padding-left: 12px;
}

.widget-body {
  background-color: #FFF;
}

.widget-toolbox {
  background-color: #EEE;
}

.widget-toolbox.padding-8 {
  padding: 8px;
}

.widget-toolbox:last-child {
  padding: 2px;
  border-top: 1px solid #CCC;
}

.widget-main {
  padding: 12px;
}

.hr {
  display: block;
  height: 0;
  overflow: hidden;
  font-size: 0;
  border-width: 1px 0 0;
  border-top: 1px solid #E3E3E3;
  margin: 12px 0;
  border-top-color: rgba(0, 0, 0, .11);
}

.hr-dotted,
.hr.dotted {
  border-style: dotted;
}

.hr-18,
.hr18 {
  margin: 18px 0;
}

.hr:nth-child(3n) {
  border-color: red
}

.hr:nth-child(3n+1) {
  border-color: green
}

.hr:nth-child(3n+2) {
  border-color: blue
}
代码语言:javascript
复制
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet" />
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="condition-container">
  <div class="widget-box workflow-component">
    <div class="widget-header"></div>
    <div class="widget-body">
      <div class="widget-main"></div>
      <div class="widget-toolbox padding-8 clearfix">
        <button type="button" class="btn btn-xs btn-danger component-delete"><i class="ace-icon fa fa-times"></i><span class="bigger-110">Delete</span></button>
      </div>
    </div>
  </div>
  <div class="hr hr-18 dotted"></div>
  <div class="widget-box workflow-component">
    <div class="widget-header"></div>
    <div class="widget-body">
      <div class="widget-main"></div>
      <div class="widget-toolbox padding-8 clearfix">
        <button type="button" class="btn btn-xs btn-danger component-delete"><i class="ace-icon fa fa-times"></i><span class="bigger-110">Delete</span></button>
      </div>
    </div>
  </div>
  <div class="hr hr-18 dotted"></div>
  <div class="widget-box workflow-component">
    <div class="widget-header"></div>
    <div class="widget-body">
      <div class="widget-main"></div>
      <div class="widget-toolbox padding-8 clearfix">
        <button type="button" class="btn btn-xs btn-danger component-delete"><i class="ace-icon fa fa-times"></i><span class="bigger-110">Delete</span></button>
      </div>
    </div>
  </div>
  <div class="hr hr-18 dotted"></div>
  <div class="widget-box workflow-component">
    <div class="widget-header"></div>
    <div class="widget-body">
      <div class="widget-main"></div>
      <div class="widget-toolbox padding-8 clearfix">
        <button type="button" class="btn btn-xs btn-danger component-delete"><i class="ace-icon fa fa-times"></i><span class="bigger-110">Delete</span></button>
      </div>
    </div>
  </div>
  <div class="hr hr-18 dotted"></div>
  <div class="widget-box workflow-component">
    <div class="widget-header"></div>
    <div class="widget-body">
      <div class="widget-main"></div>
      <div class="widget-toolbox padding-8 clearfix">
        <button type="button" class="btn btn-xs btn-danger component-delete"><i class="ace-icon fa fa-times"></i><span class="bigger-110">Delete</span></button>
      </div>
    </div>
  </div>
  <div class="hr hr-18 dotted"></div>
  <div class="widget-box workflow-component">
    <div class="widget-header"></div>
    <div class="widget-body">
      <div class="widget-main"></div>
      <div class="widget-toolbox padding-8 clearfix">
        <button type="button" class="btn btn-xs btn-danger component-delete"><i class="ace-icon fa fa-times"></i><span class="bigger-110">Delete</span></button>
      </div>
    </div>
  </div>
</div>

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43777303

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档