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オブジェクトのメソッドの1つであり、最初にDOMオブジェクトthisをjQueryオブジェクトに変換してから、jQueryメソッドを使用する必要があります。また、代わりにフォームコントロールの値を取得/設定するためのメソッドを$(this).attr("")使用できます。必要はありません。使用:valattreachAttribute 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 に答える