0

まるで

<input name="fails[]" type="file" size=40 /><br />
<textarea name="apraksts[]">About</textarea>
<a href="#" onclick="remove(this);return false".....>remove</a>

そしてjavascript:

function remove(obj){
 $(obj).prev('textarea').remove();
 $(obj).prev('input').remove();
 $(obj).remove();
 }

なぜINPUTを削除しないのですか(2つのオブジェクトを削除しないのはなぜですか)?

ありがとう..

4

2 に答える 2

3

prevのドキュメントには次のように書かれています。

一致した要素のセット内の各要素の直前の兄弟を取得します。オプションでセレクターによってフィルター処理されます。

を削除すると<textarea>、その要素はになり<br>ます。と一致しないためinput、結果のjQueryオブジェクトには要素が含まれていません。次に、それらの0個のオブジェクトを削除します。


この問題へのより良いアプローチは、すべての要素を<div>(またはコンテキストに適したセマンティクスを持つコンテナー)でラップし、それを削除することだと思います(各要素を順番に削除するのではありません)。

于 2012-04-26T13:11:15.007 に答える
0

または、prevAllを使用することもできます。これにより、以前のすべての兄弟要素が選択され、セレクターによってフィルター処理されます。

$(obj).prevAll('input')。remove();

于 2012-04-26T13:21:04.237 に答える