0

假设我有一个 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

4 回答 4

1

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

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

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

于 2012-09-09T16:54:17.470 回答
1

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

$("#my_form input").filter(function() {
    return this.value === '10';
}).remove();
于 2012-09-09T16:58:33.497 回答
0
function removeGoodInputs() {
 $("#my_form input").each(function() {
  if($(this).val() == 10) $(this).remove();
 });
}
于 2012-09-09T16:53:59.830 回答
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/

于 2012-09-09T16:54:51.593 回答