jQuery - 循环遍历所有元素并删除具有特定属性的元素

问题描述:

我是jQuery的新手,仍在学习语法。我需要帮助以特定形式遍历所有复选框,并从服务器中删除使用x的“值”设置的那些元素。语法我到目前为止,这是不工作是:jQuery - 循环遍历所有元素并删除具有特定属性的元素

$('#FormA > :checkbox').each(function() { 
    var i = $(this); 
    if(i.attr('value') == "-99") 
    { 
      i.remove(); 
    } 
}); 

它看起来读取引擎盖下的。每个()方法对所有的一个“Java的增强的for循环”式的迭代API后我传递给jQuery的DOM元素。不知道虽然...

感谢您的帮助!

+0

你能可能创建的jsfiddle来说明问题了吗?完全有可能您的选择器不符合您认为应该的所有元素。 – Tejs

大多数jQuery方法被施加到每一个元素在匹配组。要做你正在尝试做的事情,你只需要选择正确的元素集并致电remove。没有必要为each。例如:

$("#FormA > :checkbox[value='-99']").remove(); 

它使用一个"attribute equals" selector找到具有的-99一个value复选框的输入元件。然后它从DOM中删除所有选定的元素。

remove明确这一点的文档:

取出集从DOM匹配的元素的。

+0

谢谢詹姆斯!很好的解释... Matt –

我想这可能工作:

$("#FormA :checkbox[value=-99]").remove()

你的选择将最有可能的工作,如果你使用$(“#备考:复选框”),你拥有了它,现在,顺便要求复选框成为该形式的直接后代。

尝试使用属性选择器,

$('#FormA > :checkbox[value=-99]').remove(); 

Look Ma no jQuery!晚会晚了,但纯粹的JS方式。

var form = document.getElementById("formA"); 

[].forEach.call(form.querySelectorAll('input[type="checkbox"][value="-99"]'),function(el){form.removeChild(el);});​ 

Live Demo

而且它的震级更快。

JS Perf

+0

我确实喜欢这个答案,但是可以通过突出显示权衡来改善它。 http://caniuse.com/queryselector&Syntatic Sugar vs.获得巨大的重要性规模。 – Carl

+0

此外,我只有一个级别的差异:http://jsperf.com/foreach-remove-vs-jqueryeach/3 – Carl

使用本:

$('.YourClass:checked').each(function(){ 
i=$(this) 
if(i.val()=='-99'){i.remove()} 
})