gpt4 book ai didi

javascript - tr 的parentNode 未定义

转载 作者:行者123 更新时间:2023-11-28 15:08:20 24 4
gpt4 key购买 nike

当到达行 this.parentNode.removeChild(this);

我收到错误

this.parentNode is undefined

在调试器中,我在该语句的开头暂停,看到“this”是:Object[ tr#CMD01.selected ] 这正是我所期望的。父节点如何未定义?我在这里做了很多类似问题的搜索,并不断发现“this”不正确的情况,但在我的情况下,它是由调试器验证的。

 $(document).ready(function() {
$.fn.deleteThisRow = function() {
this.parentNode.removeChild(this);
};
});

function deleteRow() {
$("#theList tr.selected").deleteThisRow();
}
.selected {
background-color: yellow
}
    <body>
<center id='bg'>
<table id="cmdList">
<thead>
<tr id="hdrow">
<th>Col1</th>
<th>Col2</th>
<th>Col3</th>
</tr>
</thead>
<tbody id="theList">
<tr id="CMD00">
<td>A1</td>
<td>A2</td>
<td>A3</td>
</tr>
<tr id="CMD01" class="selected">
<td>B1</td>
<td>B2</td>
<td>B3</td>
</tr>
<tr id="CMD02">
<td>C1</td>
<td>C2</td>
<td>C3</td>
</tr>
</tbody>
</table>
<table id="buttons">
<tr>
<td>
<button onclick='deleteRow()'>Delete</button>
</td>
</tr>
</table>
</center>
</body>

最佳答案

当你实现一个 jQuery 方法时,调用时 this 的值将是 jQuery 对象,而不是 DOM 对象。因此,this.parentNode 不存在,因为 jQuery 对象不具有该名称的属性。

您可以使用 jQuery 的 .parent(),也可以获取实际的 DOM 节点,然后在其上使用 .parentNode

如果您只想一次处理一个 DOM 对象,您可以这样做:

$.fn.deleteThisRow = function() {
this[0].parentNode.removeChild(this[0]);
};

如果您的 jQuery 对象中可能有多个对象,那么您可以这样做:

$.fn.deleteThisRow = function() {
this.remove();
};
<小时/>

或者,正如您可能注意到的,您甚至不需要为此使用自定义方法。如果您有该行的 jQuery 对象,则可以直接对其调用 .remove()

function deleteRow() {
$("#theList tr.selected").remove();
}

关于javascript - tr 的parentNode 未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37898699/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com