現在の要素の直前でコントロールをターゲットにするjQueryセレクター

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

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

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

enter image description here

私はちょうどこの方法で要素を選択する方法を知る必要があります!ありがとう

2

3 答え

previousSibling のどちらかを使用できます:

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

for (var i=0, len=as.length;i

JS Fiddle demo.

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

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

JS Fiddle demo.

参考文献:

3
追加された
どういたしまして!助けになるのはうれしい! =)...私は最初のコードサンプルの if がどうにか簡略化できるはずだと思っていますが、
追加された 著者 David Thomas,
ありがとう、これはトリックです!
追加された 著者 Shane Adrian Muaz,
2
追加された
"直後の"要素セレクタです。私は "前の"セレクタが必要です。 :)
追加された 著者 Shane Adrian Muaz,
おっと!ごめんなさい!私の悪い!私は質問を編集しました! :/
追加された 著者 Shane Adrian Muaz,
あなたの質問を明確にしてください。 現在の前の項目ではなく右に選択する必要があります。ライアン・カサスと同じ印象を持っています。
追加された 著者 hasienda,
さて、私の編集された答えを読む;)
追加された 著者 Ryan Casas,
しかし今、あなたはあなたの答えを持っています。とにかく、問題ありません。
追加された 著者 Ryan Casas,

prev はあなたが望む解決策だと思います。あなたの質問に答えるために、そのためにセレクタが必要な場合は、次のように自分自身を構築することができます:

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

それを次のように使用します。

$('a:prev').someMethod(); //which works exactly like $('a').prev().someMethod
1
追加された