1

$eこのセレクターを介して取得した JQuery オブジェクトが格納されていると仮定します。

var $e = $("input[type='text'][value='" + v + "']");

v$(this).val()反復内で取得した を表し.each()ますが、実際には問題ではなく、任意の数値にすることができます。

$e、その後に続く DOM 要素、および の前の 6 つの DOM 要素を含む要素の JQuery セットを作成したいと考えています$e

関数自体は完全に正常に動作します。反復ごとに次のコードを使用しています。

var $e = $("input[type='text'][value='" + v + "']");
$e = $e.add($e.next());
for (i=0;i<6;i++)
    $e = $e.add($e.prev());
$e.remove();

少し説明が難しいと思いますので、こちらのJSFiddleをご覧ください。

上記のコードを、スクリプトにRemove line 2固定値を渡すボタンにバインドされた無名関数内にラップしました。v

私は JQuery の初心者ですが、JQuery Selectors ページをよく読んだ後でも、これを行う簡単な方法を見つけることができませんでした。.siblings()、より具体的にはJQuery('prev ~ siblings')は、jquery オブジェクト配列の範囲を指定できれば、より簡単な方法でそれを行うことができると考えましたが、方法がわかりませんでした。

HTML は PHP テンプレートを使用して生成されますが、編集は避けたいので、コンテナー/ラッパー内に特定の要素をラップすることを含まない回答を受け入れます。

特定の JQuery セレクターの前の 6 つの要素をコンテナーまたはラッパー内にラップせずに選択する簡単な方法はありますか?

4

3 に答える 3

2

それがより良いかどうかはわかりませんが、別のオプションです。

    var $siblings = $e.siblings().andSelf();
    var index = $siblings.index($e);

    $siblings.slice(index-6,index+2).remove();

http://jsfiddle.net/Lf3xm/5/

于 2012-05-07T21:48:51.933 に答える
2

siblings()とを使用できますslice()

var $e = $("input:text[value='" + v + "']");    

$e.add( $e.siblings().slice(0, 5) ).add( $e.prev() );
于 2012-05-07T21:45:28.417 に答える
2

.prevAll必要な要素を使用してスライスしてみてください。下記参照、

デモ

    var $prevAll = $e.prevAll();
    $e = $e.add($e.next()).add($prevAll.slice(0, 6));

編集:$e.add($e.next())次の要素を追加するために追加されました。

于 2012-05-07T21:46:07.963 に答える