2

優れた jQuery に関するもう 1 つの質問

同じクラスの要素をクリックしたときに、abc というクラスの dom 要素を見つけたいです。これで、検索は正確に前の要素になるはずです。

私が書いたコード:

$(this)
    .closest('.abc')
    .parent()
    .prevAll()
    .find('.abc')
    .first()
    .triggerHandler("focus");

これは、親の以前のdomを検索してabcを検索していますが、クラス「abc」が以前のdomに存在しない場合は、abcが見つかるまで検索したいです.jqueryのprevuntilでも試してみましたが、まだ運がありません.

誰かが私を助けることができれば、どうもありがとう。

4

2 に答える 2

6

これを使用して、前の要素を取得できます。

var $current = $(this); //the element you have
var $elems = $('.abc'); //the collection of elements

var $previous = $elems.eq($elems.index($current) - 1); //the one you needed

これが可能な限り最も効率的なコードであるとは言えませんが、DOM ツリーを知らなければ、これが私が思いつく最善のコードです。$('.abc')DOM が変更された可能性がある場合にのみ再実行し、キャッシュされたバージョン ( $elems) のみを使用する場合は問題ありません。

于 2012-05-19T16:25:57.503 に答える
2

ここに手っ取り早く汚れた方法があります:

$('.abc').click(function(){
    var clicked = this;
    var last;
    // Go though all elements with class 'abc'
    $('.abc').each(function(){
        if(this == clicked) return false;
        last = this;
    });
    if(last) $(last).triggerHandler("focus");
});
于 2012-05-19T16:18:40.787 に答える