2012-05-04 15 views
1

私はjQueryを初めて使用していますが、まだ構文を学んでいます。私は特定のフォームのすべてのチェックボックスの上でループを助ける必要があり、私は "xの"値で設定したそれらの要素をサーバーから削除します。動作していない私がこれまで持っている構文は、次のとおりです。jQuery - すべての要素をループし、特定の属性を持つ要素を削除する

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

それはボンネットの下.each()メソッドは、すべての上の「拡張forループのjava」スタイルの反復を行うAPIを読んだ後に見えますjQueryに渡すDOM要素。わかりません...

ありがとうございました!

+0

あなたはおそらくあなたの問題を説明するためにjsFiddleを作成できますか?あなたのセレクタが、必要と思われるすべての要素にマッチしていない可能性があります。 – Tejs

答えて

3

ほとんどjQueryのメソッドは、マッチしたセット内のすべての要素に適用されます。あなたがしようとしていることをするには、正しい要素セットを選択してremoveに電話するだけです。 eachの必要はありません。例えば:

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

これは-99valueとチェックボックスの入力要素を見つけるために、"attribute equals" selectorを使用します。次に、選択したすべての要素をDOMから削除します。 removeため

ドキュメントは、これは明確にする:

はDOMからマッチした要素のセットを削除します。

+0

ありがとうJames!大きな説明...マット –

3

私は、これはうまくいくかもしれないと思う:

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

0

あなたは$(「#フォームA:チェックボックス」)を使用している場合あなたのセレクタは、最も可能性の高い仕事になる、あなたは今それを持っている方法は、そのチェックボックスを必要としフォームの直後の子孫になります。

4

は、属性セレクタを使用してみてください、

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

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対重要性の尺度にマグニトールを得る。 – Carl

+0

また、私は1つの大きさの違いがあります:http://jsperf.com/foreach-remove-vs-jqueryeach/3 – Carl

-1

使用この:

$('.YourClass:checked').each(function(){ 
i=$(this) 
if(i.val()=='-99'){i.remove()} 
}) 
関連する問題