使用jquery删除给定的ID的所有元素

我有几个跨度与id =“myid”的表单。 我希望能够从DOM中删除所有具有此ID的元素,我认为jQuery是最好的方法。 我想通过简单的做法,如何使用$ .remove()方法去除这个id的一个实例:

$('#myid').remove() 

但当然这只是删除了myid的第一个实例。 如何迭代myid的所有实例并将其全部删除? 我认为jquery $ .each()方法可能是这样的,但我无法找出语法来遍历myid的所有实例,并将其全部删除。

如果有一个干净的方法与常规的JS(不使用jQuery)做到这一点,我也打开了。 也许问题是,身份证应该是独特的(即你不应该有多个ID =“myid”元素)?

谢谢,

克里斯

.remove()应该删除所有这些。 我认为问题在于你正在使用一个ID。 只应该有一个 HTML元素在页面上有一个特定的ID,所以jQuery正在优化,而不是全部search。 改用class级

你所有的元素应该有一个唯一的ID,所以不应该有多个#myid元素

“id”是一个唯一的标识符。 每次在文档中使用该属性时,都必须具有不同的值。 如果您使用此属性作为样式表的钩子,则可能比使用类(它们用于标识一个元素)更适合使用类(该组元素)。

Neverthless,试试这个:

 $("span[id=myid]").remove(); 

dom元素呼喊的id是唯一的。 改用class( <span class='myclass'> )。 要删除这个类的所有跨度:

 $('.myclass').remove() 

如果要删除具有匹配ID部分的所有元素,例如:

 <span id='myID_123'> <span id='myID_456'> <span id='myID_789'> 

尝试这个:

 $("span[id*=myID]").remove(); 

不要忘记'*' – 这会立即消除他们 – 欢呼

工作演示

你应该使用一个class作为多个元素,因为一个id只是一个元素。 要在.each()语法上回答你的问题,这就是它的样子:

 $('#myID').each(function() { $(this).remove(); }); 

官方JQuery文档在这里 。

最干净的方法是使用html5select器api,具体为querySelectorAll()

 var contentToRemove = document.querySelectorAll("#myid"); $(contentToRemove).remove(); 

querySelectorAll()函数返回一个与特定的id匹配的dom元素数组。 一旦你已经将返回的数组赋值给一个var ,那么你可以将它作为parameter passing给jquery remove()

如前所述,只有一个元素可以具有特定的ID。 改用类。 这里是jQuery免费版本来删除节点:

 var form = document.getElementById('your-form-id'); var spans = form.getElementsByTagName('span'); for(var i = spans.length; i--;) { var span = spans[i]; if(span.className.match(/\btheclass\b/)) { span.parentNode.removeChild(span); } } 

getElementsByTagName 是在这里可以使用的最具有跨浏览器兼容性的方法 。 getElementsByClassName会好得多,但不被Internet Explorer <= IE 8支持。

工作演示