2011-12-04 30 views
2

選択したものの前のものの1つ前のもの、つまり選択したものから2つ離れたものを参照したい。 (申し訳ありませんが、それをフレーズするのは難しいです)jQueryで選択したオプションの前の要素を選択する

たとえば、ここから「4」を選択した場合は、オプション2の値を取得します。

<option value ="1">1</option> 
<option value ="2">2</option> 
<option value ="3">3</option> 
<option value ="4">4</option> 

直前の方法は以前の方法がありますが、他の方法はありますか?

ありがとうございます!

+1

オプション値2または1を選択するとどうなりますか? – MatthewJ

+0

@MatthewJああ、それは良い質問です!私はそれを3歳以上に適用する必要があります。ありがとう! – claras

答えて

3

あなたはこの

$("select").change(function(){ 
    var a = $('select option:selected').prev().prev().text(); 
    alert(a); 
}); 

例を行うことができます。

+0

パーフェクト、ありがとう! – claras

+0

@clarasを手伝ってくれてうれしい! –

1

prev関数は、指定されたノードに対して前の兄弟を取得します。それを2回呼び出すと、あなたが望むものが達成されます。選択は2以下であるときhttp://jsfiddle.net/jasongennaro/NcPgV/

しかし、これは何も返さない:

var element = $("option[value='4']"); 
var prev2 = $(element).prev().prev(); 
alert(prev2.val()); 
//alerts 2 

はここfiddle

2

他の人からも言われているように、prev()を2回呼び出すことができます。

代わりの、よりスケーラブルな解決策は、prevAll()を使用することです。これは、外側に最も近い兄弟から注文した要素を返しますので、あなたはeq()とそれを組み合わせることができます:あなたが離れてから2つの以上のオプションを移動したい場合はprev()に複数の呼び出しを

var siblingValue = $("option:selected").prevAll().eq(1).val(); 

この方法で、あなたが連鎖する必要はありません選択されたもの。

+0

これは知っておいてよかった!ありがとう! – claras

関連する問題