我有几个跨度使用id =“本身份识别码”的形式。我希望能够删除所有元素从DOM这个ID,我认为jQuery是做到这一点的最好办法。我想通了如何使用$一个.remove()方法来删除该ID的一个实例,通过简单地做:

$('#myid').remove()

,但当然,只有消除本身份识别码的第一个实例。如何做身份识别码的我遍历所有实例,将它们全部删除?我认为jQuery的$。每()方法可能是这样,但我不能在身份识别码的所有实例的语法搞清楚迭代并删除它们。

如果有一个干净的方式与普通JS(不使用jQuery)我是持开放的态度也做到这一点。也许问题是,ID的都应该是唯一的(例如,您不应该有id为“身份识别码”多元素)?

谢谢,

克里斯

有帮助吗?

解决方案

.remove()应该删除所有这些。我认为问题是,你正在使用的ID。还有的只应该是的一个的HTML与页面上的特定ID的元素,所以jQuery是优化,而不是为他们寻找一切。使用代替。

其他提示

所有的元件应具有一个唯一的ID,所以不应该与#myid

一个以上的元素是

一个“id”是唯一的标识符。每次这个属性是一个文档中使用时,必须有不同的值。如果正在使用该属性作为样式表的钩可能更适合于使用的类(其组元素)比ID(其被用于识别恰好一个元素)。

Neverthless,尝试这样:

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

DOM元素的ID喊是唯一的。使用类,而不是(<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文档此处

要做到这一点是通过使用HTML5选择器API,具体querySelectorAll()的干净的方式。

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

querySelectorAll()函数返回匹配的特定ID的DOM元素的阵列。一旦已分配返回的数组的var,然后就可以把它作为一个参数传递给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 href="http://www.quirksmode.org/dom/w3c_core.html#gettingelements" rel="nofollow">是可以使用的最跨浏览器兼容的方法这里。 getElementsByClassName会更好,但并不由Internet Explorer <= IE 8支撑。

工作演示

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top