2017-07-27 5 views
0

私はjQuery 'each'関数を持っています。それは適切な状況に遭遇するたびに、それは新しいヘッダを作成し、CSSクラスを追加します。jQuery .prev - 前にインスタンスを取得できますか?

$(this).before('<tr><td></td><td></td><td></td><td></td><td></td></tr>'); 
$(this).prev().addClass('cd_header'); 

私の問題は、私は最後のヘッダの要素の値に基づいて、このヘッダのいくつかの属性を設定する必要があり、わたしは作った。したがって、単一の.prev()は機能しません。私は今作成したヘッダの属性を読み込むだけです。

.prevに1つのインスタンスを2つ戻したいと言っている方法がありますか?または、.prev()。prev()を何とか積み重ねることができますか?

答えて

1

私はあなたがしなければならないことは、その注入されたhtmlをオブジェクトに割り当てて、その前を取得することだと思います。だから、私はそれを試してDID、

var $row = $('<tr><td></td><td></td><td></td><td></td><td></td></tr>') 
$(this).before($row); 
$row.prev().addClass('cd_header'); 

または短い

$('<tr><td></td><td></td><td></td><td></td><td></td></tr>').insertBefore($(this)).prev().addClass('cd_header'); 
+0

非常に滑らかです、ありがとう! – buckshot

2

また、.prev()。prev()を何らかの形でスタックできますか?

もちろん可能です。おそらくそれを試したはずです。 prevは、現在のセット内の各要素の直前の兄弟のセットを返します。理由がなければ、prevに2回目に戻ってもう一度戻ることを頼むことはできません。

別のオプションはsome-selectorを検索する前の兄弟を特定するセレクタである.prevAll('some-selector').first()prevAllfirst続い)、です。セレクタと一致するすべて以前の兄弟を見つけ、そのうち最初のもの(prevAllによって保証されているもの)を開始した場所に最も近いものにします。それほど脆弱ではありません(たとえば、を挿入するように変更した場合、ある時点で1つではなく2つのtrが残っていても問題はありません)。

+0

まあ後ろ2 PREVを取得しますが、私はエラーを取得保管しました。私は私の構文に取り組んでいきます。ありがとうございました。 – buckshot

関連する問題