首页 > remove(); empty(); 这些jquery方法将元素移除后,id仍然存在,怎么彻底删除id?谢谢

remove(); empty(); 这些jquery方法将元素移除后,id仍然存在,怎么彻底删除id?谢谢

remove(); empty(); 这些jquery方法将元素移除后,
同一个页面如果再添加相同id(与移除的id相同)的元素,也会造成id冲突,
请问怎么解决,怎么彻底将原来的id彻底删除掉啊?


remove()没什么问题;

说说你的冲突;


我也觉得是事件委托的问题


$('该元素选择器').attr('id','');

可以尝试下。


发现一个问题,不管用jquery remove()删除元素,还是用原生js的removeChild,都有一个同样的结果:
删除后

if(document.getElementById("元素id")){//结果alert删除
    alert("getElementById,存在");
}else{
    alert("getElementById,已经删除");
}
if($("#"+"元素id")){//结果alert存在
    alert("$存在");
}else{
    alert("$已经删除");
}

不研究太多基础的东西,删除元素并把id置空应该能解决你的问题。另外这种删除元素的操作,建议用js的原生写法,jq封装之后的东西,你并不知道实现原理,有的可能仅仅是隐藏了当前的元素而已。

<div id="div1">
    <p id="p1">This is a paragraph.</p>
    <p id="p2">This is another paragraph.</p>
</div>

<script>
    var parent = document.getElementById("div1");
    var child = document.getElementById("p1");
    parent.removeChild(child);
    alert(document.getElementById("p1"));
</script>

这么写我在chrome里测试显示的是null,如果为了保险起见,就把id再置空一边应该ok。


看了你在楼上回答里的评论,有个问题需要确认一下:你是不是用了事件委托?

事件是绑定在元素上的,元素从页面中移除了以后事件已经没有了触发条件,理应不触发。

你的问题的话可能有两种情况,

1、用了事件委托,事件绑定在父级元素上了,所以事件依然触发。

2、你在切换选项卡的时候,又把事件给绑到新元素上去了。

跟一下代码,看一下触发条件,就可以知道是哪里的问题啦。


"同一个页面如果再添加相同id(与移除的id相同)的元素" 是指在页面加载完成之后再生成的元素吗?如果是新添加的元素,绑定事件需要写成:

jQuery('div').delegate('id','click',function(){
    alert("hello");
});
【热门文章】
【热门文章】