2

いくつかのコードを組み合わせようとしていますが、やりたいことが可能かどうかわかりません。基本的に、私は一連のif / elseステートメントを持つ関数を持っており、すべての異なるケースで類似している1行があります。

$('#selector).prev('.class-selector').addClass('current');
$('#selector).next('.class-selector').addClass('current');
$('#selector).last('.class-selector').addClass('current');
$('#selector).first('.class-selector').addClass('current');

フィルタメソッド(、、、)を変数として設定prevnextて、関数全体でこの行を繰り返す必要がないようにするlast方法はありますか?first関数にパラメーターを渡し、メソッドとして変数を使用してみました。

$('#selector).variable('.class-selector').addClass('current');

しかし、それは機能しません。私は得る:

オブジェクトにメソッド'変数'"エラーがありません。

jQueryコードの読み取り方法に基づいて、これが機能しない理由を漠然と理解しています。これを行う別の方法はありますか?

4

3 に答える 3

1

これはそれほど短くはありませんが、間違いなくもっと凝縮されています:)

for (var i = 0, fns = ['prev', 'next', 'last', 'first'], fn; fn = fns[i]; ++i) {
    $('#selector')[fn]('.class-selector').addClass('current');
}
于 2012-06-06T14:51:21.280 に答える
0
var $all = $('#selector .class-selector')
$all.eq(0).addClass('current'); //first
$all.eq(4).addClass('current'); //fifth
$all.eq($all.length-1).addClass('current'); //last
于 2012-06-06T14:49:51.060 に答える
0

jqueryプラグインとして試すことができます...

(function( $ ){
    $.fn.pnlf = function(class_selector, current) {
        this.prev(class_selector).addClass(current);
        this.next(class_selector).addClass(current);
        this.last(class_selector).addClass(current);
        this.first(class_selector).addClass(current);

        return this;
    };
})( jQuery );

// Use the plugin on the selected element...
$("#selector").pnlf("class-selector", "current");
于 2012-06-06T15:36:29.433 に答える