2011-12-18 9 views
2

現在の要素の右にある要素を選択しようとしています。現在の要素は、クリックするとハイパーリンクの直前の「ターゲット」にテキストを追加するハイパーリンクです。現在の要素の直前のコントロールを対象とするjQueryセレクター

これらのコントロールはasp:repeaterにあり、同じシーケンスが何度も何度も繰り返され、すべてのハイパーリンクがそのすぐ上の要素を識別できる必要があります。

は、ここに私のDOMのスクリーンショットです

enter image description here

私はこの方法で要素を選択する方法を知っておく必要があり

http://api.jquery.com/prev/を使用でき

答えて

3

いずれかpreviousSibling

var as = document.getElementsByTagName('a'); 

for (var i=0, len=as.length;i<len;i++){ 
    as[i].onclick = function(e){ 
     e.preventDefault(); 
     var previous; 
     if (this.previousSibling.nodeName == '#text') { 
      // the previousSibling was a textnode, comprising of the whitespace between elements 
      previous = this.previousSibling.previousSibling; 
     } 
     else { 
      previous = this.previousSibling; 
     } 
     previous.style.backgroundColor = 'yellow'; 
    }; 
} 

JS Fiddle demoおかげ

+0

ありがとう、これはトリックです! –

+0

あなたは大歓迎です!助けになるのはうれしい! =)...私は最初のコードサンプルの 'if'は何らかの形で簡略化できなければならないと思っていますが、= / –

2

は多分これはhttp://api.jquery.com/next/

EDITを?:します。

$('a').click(
    function(e){ 
     e.preventDefault(); 
     $(this).prev('div').css('background-color','yellow'); 
    }); 

JS Fiddle demo

またはjQueryのprev()を使用しています。

参考文献:

+0

ちょうどあなたがそのためのセレクタをしたい場合、あなたはこのように1を自分で構築することができ、あなたの質問に答えるために。私は "前の"セレクタが必要です。 :) –

+2

あなたの質問を明確にしてください。それは* **の前に、**現在の**の前に**右の要素を選択してください。ライアン・カサスと同じ印象を持っています。 – hasienda

+0

[OK]を私の編集した答えを読む;) –

1

私はprevがあなたが望む解決策だと思います。

$.expr[':'].prev = function(o) { 
    return $(o).prev(); 
}; 

など、それを使用します:

「直後の」要素セレクタのthats
$('a:prev').someMethod(); // which works exactly like $('a').prev().someMethod 
関連する問題