javascript - 使用 JQuery clone() 时,为什么 remove() 不起作用
问题描述
我使用 jquery clone() 复制表元素,我想删除第一个 td 有我的代码,有人可以帮忙吗?
javascript
$.fn.hasAttr = function(name) {
return this.attr(name) !== undefined;
};
var arr_tr=new Array();
$('table tr').each(function(i){
arr_tr[i].push($(this).clone());
});
//for some reason I need use like below
for(var x in arr_tr){
for(var y in arr_tr[x]){
if(arr_tr[x][y].find('td:eq(0)').hasAttr('rowspan')){//if td has rowspan attribute
arr_tr[x][y].find('td:eq(0)').remove();//<== Why [<td rowspan=3>ABC</td>] can't remove
};
}
}
HTML
<table border=1 width='100%'>
<tr><td rowspan=3>ABC</td><td>A2</td><td>A3</td></tr>
<tr><td>B2</td><td>B3</td></tr>
<tr><td>C2</td><td>C3</td></tr>
</table>
解决方案
您可以将其简化为仅使用属性选择器:
const $clone = $('table').clone();
$clone.find('td:first-child[rowspan]').remove();
$('#res').append($clone)
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<table border=1 width='100%'>
<tr>
<td rowspan=3>ABC</td>
<td>A2</td>
<td>A3</td>
</tr>
<tr>
<td>B2</td>
<td>B3</td>
</tr>
<tr>
<td>C2</td>
<td>C3</td>
</tr>
<tr>
<td rowspan=2>CDE</td>
<td>C4</td>
<td>C5</td>
</tr>
<tr>
<td>C6</td>
<td>C7</td>
</tr>
</table>
<h3>Result</h3>
<div id="res"></div>
推荐阅读
- date - Power BI 周视觉过滤
- google-cloud-platform - GCP 中的 AI Notebook 和 Cloud Datalab 有什么区别?
- python - 我可以在不复制数据的情况下在 NumPy 数组中组合不相邻的维度吗?
- wix - Wix 安装程序检测 SELFFOUND 什么时候应该是 PREVIOUSFOUND
- java - 如何编写带有参数@link的javadoc @deprecated方法
- java - Hibernate多模块项目:扩展实体添加多对多关系
- python - 无法导入django
- sql - 当我尝试在另一个过程中调用一个过程时,出现此 sql 错误“此范围内不存在名称为 'PROC_DISPLAY_FIRSTNAME' 的函数”
- postgresql - 在 PostgreSQL 中解释与解释分析
- android - 如何修复错误 java.lang.NumberFormatException:对于输入字符串:“1kotlin.jvm.internal.IntCompanionObject@b8225a”