首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用jQuery仅选择一个元素

使用jQuery仅选择一个元素
EN

Stack Overflow用户
提问于 2016-08-03 20:59:02
回答 3查看 1.2K关注 0票数 2

我有一张桌子,里面有很多东西。我试图在用户单击编辑按钮时显示输入字段,但我不知道如何只选择与编辑按钮在同一行中的元素。下面是表结构:

代码语言:javascript
复制
<table>

    <tr class="table-row">
        <td>
          <a href="#" class="item-name">Item 1</a>
          <input type="text" value="[item]" class="input-item" id="item-1">
        </td>
        <td>
          <a href="#" class="item-name">Price 1</a>
          <input type="text" value="[item]" class="input-item" id="price-1">
        </td>
        <td><a href="#" class="edit-button">Edit</a></td>
    </tr>

    <tr class="table-row">
        <td>
          <a href="#" class="item-name">Item 2</a>
          <input type="text" value="[item]" class="input-item" id="item-2">
        </td>
        <td>
          <a href="#" class="item-name">Price 2</a>
          <input type="text" value="[item]" class="input-item" id="price-2">
        </td>
        <td><a href="#" class="edit-button">Edit</a></td>
    </tr>

    ...

</table>

我想要发生的是,当用户单击特定行中的Edit链接时,输入字段将出现(在第1列和第2列中),文本将消失,允许用户从表本身进行编辑。问题是,我的jQuery代码(显然)选择了所有的.input-item类,从而显示了所有行的所有输入。

代码语言:javascript
复制
$('.edit-button').click(function(event){
  $('.input-item').show();
});

如何使用jQuery仅选择单击的Edit链接的.table-row中的输入?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-08-03 21:00:19

您需要在当前元素上下文中使用.closest()方法遍历.table-row,即this,然后使用.find()指向后代.input-item元素。

代码语言:javascript
复制
$('.edit-button').click(function(event){
  $(this).closest('.table-row').find('.input-item').show();
});
票数 4
EN

Stack Overflow用户

发布于 2016-08-03 21:00:48

您可以尝试这样做:

代码语言:javascript
复制
  $(this).closest('tr.table-row').find('.input-item').show();
票数 2
EN

Stack Overflow用户

发布于 2016-08-03 21:06:28

您可以考虑:has选择器(我在演示时使用了切换而不是仅显示):

代码语言:javascript
复制
$(function () {
  $('.edit-button').click(function (event) {
    $(this).parent().siblings(':has(".input-item")').toggle();
  });
});
代码语言:javascript
复制
<script src="https://code.jquery.com/jquery-1.12.4.min.js"></script>

<table>

    <tr class="table-row">
        <td>
            <a href="#" class="item-name">Item 1</a>
            <input type="text" value="[item]" class="input-item" id="item-1">
        </td>
        <td>
            <a href="#" class="item-name">Price 1</a>
            <input type="text" value="[item]" class="input-item" id="price-1">
        </td>
        <td><a href="#" class="edit-button">Edit</a></td>
    </tr>

    <tr class="table-row">
        <td>
            <a href="#" class="item-name">Item 2</a>
            <input type="text" value="[item]" class="input-item" id="item-2">
        </td>
        <td>
            <a href="#" class="item-name">Price 2</a>
            <input type="text" value="[item]" class="input-item" id="price-2">
        </td>
        <td><a href="#" class="edit-button">Edit</a></td>
    </tr>
</table>

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

https://stackoverflow.com/questions/38744392

复制
相关文章

相似问题

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