ie浏览器下删除父元素的父元素(祖父元素)-----remove()方法在ie下失效的解决方法

在项目中遇到IE浏览器兼容性问题,当点击‘取消’按钮时,需删除包含该按钮的整个表格行。初始使用jQuery的`$(this).parents().remove()`在Chrome、Firefox和360浏览器中正常工作,但在IE9及IE11中失败。尝试`$(this).parent().parent().remove()`和`$(this).parent().remove()`依然无法删除祖父元素。经研究发现`remove()`方法在IE浏览器中可能存在兼容性问题。最终通过原生JavaScript的`ele.parentNode.removeChild(ele)`解决了问题,同时加入浏览器检测以确保在非IE环境下使用jQuery的`remove()`方法,实现跨浏览器的兼容删除功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天在做一个项目时,就遇见了ie兼容性问题。

问题如下:


我们项目需求是要求做一个表格,点击”添加”按钮时,就会添加一行有序号,input输入框和“完成”以及“取消”按钮的元素。如果点击“取消”按钮时,整行元素就会删除。

html结构如下所示:


需求是删除“取消”所在元素的父元素的父元素。我一看这么简单,直接js就写为:

var _obj = $("#table-contractCreate");
_obj.on("click",".cancle",function(){
$(this).parents().remove();
});

在chrome一试,ok。在火狐下,在ok。360浏览器下,ok。  ie浏览器 ,game over。

我感觉可能是我的ie9版本太低,就用ie11试试,也不行。报错信息如下:


于是我改写js代码:

var _obj = $("#table-contractCreate");
_obj.on("click",".cancle",function(){
$(this).parent().parent().remove();
});

试了试还是不行。

直接把删除那行代码改为:$(this).parent().remove(); ie下运行可以,父元素可以删除,但父元素的父元素不可以删除,很奇怪的操作。

查资料说是remove()方法在ie浏览器下不兼容。那既然不兼容就不用它了。于是乎我就把删除整行元素的代码改成了原生js形式:

var ele = document.getElementById("newRow");
ele.parentNode.removeChild(ele);(给tr行加个“newRow”的id值。)

这下运行没问题。不过为了删除功能在各个浏览器下的兼容性,我加个判断,如果是ie浏览器下,那就用原生js代码实现删除功能,如果

是非ie浏览器下 ,那就用jquery方法下的remove()方法。算是比较周全的解决方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值