javascript - 通过 jQuery 访问被单击的元素内的 <li> 的最简单方法是什么?

标签 javascript jquery html

我试图了解通过 jQuery 访问元素所在的 li 的最佳方式。

例如:

$(".delete-button").on('click', function() {

    var listItemToRemove = $(this).parent().parent().parent().parent().parent().parent();
    listItemToRemove.slideUp( function(){ listItemToRemove.remove(); });

});

$(".delete-button").on('click', function() {

  var listItemToRemove = $(this).parent().parent().parent().parent().parent().parent();
  listItemToRemove.slideUp(function() {
    listItemToRemove.remove();
  });

});
.delete-button {
  border: 1px solid black;
  padding: 10px;
  cursor: pointer;
  display: inline-block;
}

li {
  list-style-type: none;
}

h1 {
  text-align: center;
  font-size: 1.5em;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="container">
  <h1>
    Delete Some Stuff!
  </h1>
  <div>
    <ul class="mylist">
      <li class="whatever">
        <table width=100%>
          <tr>
            <td>Some Text 1</td>
            <td align="right">
              <div class="delete-container">
                <div class="delete-button">Delete</div>
              </div>
            </td>
          </tr>
        </table>
      </li>
      <li class="whatever">
        <table width=100%>
          <tr>
            <td>Some Text 2</td>
            <td align="right">
              <div class="delete-container">
                <div class="delete-button">Delete</div>
              </div>
            </td>
          </tr>
        </table>
      </li>
      <li class="whatever">
        <table width=100%>
          <tr>
            <td>Some Text 3</td>
            <td align="right">
              <div class="delete-container">
                <div class="delete-button">Delete</div>
              </div>
            </td>
          </tr>
        </table>
      </li>
      <li class="whatever">
        <table width=100%>
          <tr>
            <td>Some Text 4</td>
            <td align="right">
              <div class="delete-container">
                <div class="delete-button">Delete</div>
              </div>
            </td>
          </tr>
        </table>
      </li>
      <li class="whatever">
        <table width=100%>
          <tr>
            <td>Some Text 5</td>
            <td align="right">
              <div class="delete-container">
                <div class="delete-button">Delete</div>
              </div>
            </td>
          </tr>
        </table>
      </li>
    </ul>
  </div>
</div>

https://jsfiddle.net/a1bd9o68/

这是一种删除按钮所在列表项的方法,但可能还有更简单的方法。我该如何实现这个目标?

最佳答案

使用 .closest 并将其传递给 listItemToRemove 的选择器:

$(".delete-button").on('click', function() {
  $(this)
    .closest('.whatever')
    .slideUp(function() {
      $(this).remove();
    });
});
.delete-button {
  border: 1px solid black;
  padding: 10px;
  cursor: pointer;
  display: inline-block;
}

li {
  list-style-type: none;
}

h1 {
  text-align: center;
  font-size: 1.5em;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="container">
  <h1>
    Delete Some Stuff!
  </h1>
  <div>
    <ul class="mylist">
      <li class="whatever">
        <table width=100%>
          <tr>
            <td>Some Text 1</td>
            <td align="right">
              <div class="delete-container">
                <div class="delete-button">Delete</div>
              </div>
            </td>
          </tr>
        </table>
      </li>
      <li class="whatever">
        <table width=100%>
          <tr>
            <td>Some Text 2</td>
            <td align="right">
              <div class="delete-container">
                <div class="delete-button">Delete</div>
              </div>
            </td>
          </tr>
        </table>
      </li>
      <li class="whatever">
        <table width=100%>
          <tr>
            <td>Some Text 3</td>
            <td align="right">
              <div class="delete-container">
                <div class="delete-button">Delete</div>
              </div>
            </td>
          </tr>
        </table>
      </li>
      <li class="whatever">
        <table width=100%>
          <tr>
            <td>Some Text 4</td>
            <td align="right">
              <div class="delete-container">
                <div class="delete-button">Delete</div>
              </div>
            </td>
          </tr>
        </table>
      </li>
      <li class="whatever">
        <table width=100%>
          <tr>
            <td>Some Text 5</td>
            <td align="right">
              <div class="delete-container">
                <div class="delete-button">Delete</div>
              </div>
            </td>
          </tr>
        </table>
      </li>
    </ul>
  </div>
</div>

关于javascript - 通过 jQuery 访问被单击的元素内的 <li> 的最简单方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59691396/

相关文章:

javascript - 使用覆盖 promise 默认捕获实现

javascript - 大量 dom 元素的问题

javascript - 谷歌柱形图更改栏颜色未动态设置

php - 在 php 中连接 mysql 列值

html - 我可以在 CSS 中编写自己的伪函数吗

javascript - 获取ul li a里面img的宽度

javascript - PHP,AJAX联系表上的Captcha系统问题

jquery - 更改 <div> 的背景颜色时.delay() 不起作用

javascript - 使用 jquery 从函数中排除子元素

html - 在 CSS/HTML 中将两个相邻的元素居中