删除当前的<;tr>;并删除<;tr>;在使用普通javascript之前
我有这个HTML结构:删除当前的<;tr>;并删除<;tr>;在使用普通javascript之前,javascript,html,Javascript,Html,我有这个HTML结构: <tr class="project-details">REMOVE THIS</tr> <tr class="project-description"> <td colspan="6"> <div class="project-desc-inner"> <div class="project-synopsis"> <p class="trunk8"&g
<tr class="project-details">REMOVE THIS</tr>
<tr class="project-description">
<td colspan="6">
<div class="project-desc-inner">
<div class="project-synopsis">
<p class="trunk8">This is an entry</p>
</div>
<div class="project-verification">
<span class="verfied-badge"> <~~~~~~~~~~ THIS SPAN
<span class="currency-symbol">$</span>
<span class="icon-tick"></span>
Verified
</span>
</div>
<div class="project-actions">
<a href="#">
<button class="btn">LOL</button>
</a>
</div>
</div>
</td>
</tr>
它所做的是用我要查找的
选择
,然后删除整个跨度。这部分el.prev('tr').remove()代码>不起作用,有其他选择吗
谢谢 prev
是jQuery对象的一种方法HTMLElement
对象没有prev
方法。要选择上一个元素同级,可以使用previousElementSibling
属性。使用else
子句的主体:
(function removePreviousSibling(sibling) {
if (sibling.nodeName === 'TR' && sibling.classList.contains('project-details')) {
return sibling.parentNode.removeChild(sibling);
}
removePreviousSibling(sibling.previousSibling);
}(el.previousSibling));
el.parentNode.removeChild(el);
IIFE确保如果在两个
元素之间有一个额外的文本节点,则如果您刚刚在目标元素的以前的同级上调用了removeChild
,则该文本节点将被跳过,而不会被删除
请查看下面的信息。它有一套很棒的界面文档和教程 再次感谢,谢谢!顺便说一句,我如何确保此类
删除包含类项目详细信息
?谢谢如果您想继续迭代,直到找到包含该项目的匹配项,请执行if(sibling.nodeName==='TR')
,而不是if(sibling.nodeName==='TR'&&sibling.classList.contains('project-details'))
class@TheWolf我还想知道,看起来你有一张表格描述了某种项目,是否应该删除该表。更一般地说,你想解决什么问题?实际上你已经解决了所有问题。这是:
(function removePreviousSibling(sibling) {
if (sibling.nodeName === 'TR' && sibling.classList.contains('project-details')) {
return sibling.parentNode.removeChild(sibling);
}
removePreviousSibling(sibling.previousSibling);
}(el.previousSibling));
el.parentNode.removeChild(el);