使用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支持。
工作演示