如何使用jQuery .each循环删除特定元素?

时间:2012-09-09 16:51:38

标签: javascript jquery dom each

假设我有一个包含以下内容的HTML文档:

<form id = "my_form">
    <input type = "text" />
    <input type = "text" />
    <input type = "text" />
    <button type = "button" onclick = "removeGoodInputs()">Do the job</button>
</form>

我想摆脱满足某些条件的输入值(在我的JS中给出)。我尝试创建removeGoodInputs()函数(如下所示),但这会删除表单中的所有输入。我该如何解决这个问题?

function removeGoodInputs() {
    $("#my_form input").each(function() {
        if(this.attr("value") == 10)
            $(this).remove();
    });
}

4 个答案:

答案 0 :(得分:1)

attr是jQuery对象的方法之一,首先应该将DOM对象this转换为jQuery对象,然后使用jQuery方法$(this).attr(""),也可以使用val 1}}获取/设置表单控件的值而非attr的方法,而您不需要each,您可以使用Attribute Equals Selector

function removeGoodInputs() {
    $("#my_form input[value='10']").remove();
}

$("#my_form input[value='10']")选择其值为10的输入。

答案 1 :(得分:1)

解决此问题的另一种方法是使用.filter [docs]

$("#my_form input").filter(function() {
    return this.value === '10';
}).remove();

答案 2 :(得分:0)

function removeGoodInputs() {
 $("#my_form input").each(function() {
  if($(this).val() == 10) $(this).remove();
 });
}

答案 3 :(得分:0)

.attr()是一个jQuery方法,因此只能在jQuery对象上调用它。此外,在jQuery中.val()是获取值的更简单方法(快捷方式)。

所以,这行代码不正确:

if(this.attr("value") == 10)

我会建议:

if (this.value == "10")      // plain javascript

或:

if ($(this).val() == "10")   // jQuery

注意,我还将比较更改为字符串,因为这是.value返回的内容,最好不要依赖自动类型转换。

您可以在此处查看:http://jsfiddle.net/jfriend00/HMemp/