将elem附加到父标记

时间:2018-04-16 20:35:52

标签: javascript jquery

我正在使用JQuery 3.2.1,并希望在单元格前附加一个具有特定值的表格列。

最终结果应如下所示:

enter image description here

在下面找到我简单易行的例子:



const targetButton = $(".btn.btn-primary.btn-sm.motherboard")
targetButton.append(`
        <td>
            <img src="" alt="" height="42" width="42">
            <a href="">
                Test Title
            </a>
        </td>    
        `)
&#13;
<link href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.0/css/bootstrap.min.css" rel="stylesheet"/>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table style="float: left;" class="table table-bordered">
  <tbody>
    <tr>
      <td>CPU</td>
      <td>
        <button type="button" data-exists="cpu" class="btn btn-primary btn-sm cpu">
                                            Add CPU
                                        </button>
      </td>
    </tr>
    <tr>
      <td>Motherboard</td>
      <td>
        <button type="button" data-exists="motherboard" class="btn btn-primary btn-sm motherboard">
                                            Add Motherboard
                                        </button>
      </td>
    </tr>
    <tr>
      <td>Graphic Card</td>
      <td>
        <button type="button" data-exists="graphic-card" class="btn btn-primary btn-sm graphic-card">
                                            Add Graphic Card
                                        </button>
      </td>
    </tr>
    <tr>
      <td>Power Supply&nbsp;</td>
      <td>
        <button type="button" data-exists="power-supply" class="btn btn-primary btn-sm power-supply">
                                            Add Power Supply
                                        </button>
      </td>
    </tr>
    <tr>
      <td>More Parts&nbsp;</td>
      <td>
        <button type="button" data-exists="more-parts" class="btn btn-primary btn-sm more-parts">
                                            Add More Parts
                                        </button>
      </td>
    </tr>
  </tbody>
</table>
&#13;
&#13;
&#13;

如您所见,标签直接插入按钮。在我的整个Javascript应用程序的运行时,我只有按钮作为选定元素可用。

如何在按钮的父元素之前将代码附加到我的append函数中?

感谢您的回复!

2 个答案:

答案 0 :(得分:1)

首先选择目标按钮的父元素:

const targetButton = $(".btn.btn-primary.btn-sm.motherboard")
const targetButtonParent = targetButton[0].parentElement;
targetButtonParent.insertAdjacentHTML('beforebegin', `
        <td>
            <img src="" alt="" height="42" width="42">
            <a href="">
                Test Title
            </a>
        </td>    
        `)
<link href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.0/css/bootstrap.min.css" rel="stylesheet"/>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table style="float: left;" class="table table-bordered">
  <tbody>
    <tr>
      <td>CPU</td>
      <td>
        <button type="button" data-exists="cpu" class="btn btn-primary btn-sm cpu">
                                            Add CPU
                                        </button>
      </td>
    </tr>
    <tr>
      <td>Motherboard</td>
      <td>
        <button type="button" data-exists="motherboard" class="btn btn-primary btn-sm motherboard">
                                            Add Motherboard
                                        </button>
      </td>
    </tr>
    <tr>
      <td>Graphic Card</td>
      <td>
        <button type="button" data-exists="graphic-card" class="btn btn-primary btn-sm graphic-card">
                                            Add Graphic Card
                                        </button>
      </td>
    </tr>
    <tr>
      <td>Power Supply&nbsp;</td>
      <td>
        <button type="button" data-exists="power-supply" class="btn btn-primary btn-sm power-supply">
                                            Add Power Supply
                                        </button>
      </td>
    </tr>
    <tr>
      <td>More Parts&nbsp;</td>
      <td>
        <button type="button" data-exists="more-parts" class="btn btn-primary btn-sm more-parts">
                                            Add More Parts
                                        </button>
      </td>
    </tr>
  </tbody>
</table>

答案 1 :(得分:1)

@CertainPerformance answer是对的..这是一个jquery解决方案......使用.closest()insertBefore()

const targetButton = $(".btn.btn-primary.btn-sm.motherboard").closest('td');
$('<td><img src="" alt="" height="42" width="42"><a href="">Test Title</a></td>').insertBefore(targetButton);
<link href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.0/css/bootstrap.min.css" rel="stylesheet"/>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table style="float: left;" class="table table-bordered">
  <tbody>
    <tr>
      <td>CPU</td>
      <td>
        <button type="button" data-exists="cpu" class="btn btn-primary btn-sm cpu">
                                            Add CPU
                                        </button>
      </td>
    </tr>
    <tr>
      <td>Motherboard</td>
      <td>
        <button type="button" data-exists="motherboard" class="btn btn-primary btn-sm motherboard">
                                            Add Motherboard
                                        </button>
      </td>
    </tr>
    <tr>
      <td>Graphic Card</td>
      <td>
        <button type="button" data-exists="graphic-card" class="btn btn-primary btn-sm graphic-card">
                                            Add Graphic Card
                                        </button>
      </td>
    </tr>
    <tr>
      <td>Power Supply&nbsp;</td>
      <td>
        <button type="button" data-exists="power-supply" class="btn btn-primary btn-sm power-supply">
                                            Add Power Supply
                                        </button>
      </td>
    </tr>
    <tr>
      <td>More Parts&nbsp;</td>
      <td>
        <button type="button" data-exists="more-parts" class="btn btn-primary btn-sm more-parts">
                                            Add More Parts
                                        </button>
      </td>
    </tr>
  </tbody>
</table>