2

この質問がありますが、根本的な答えは見つかりません...

したがって、jQueryで2つの変数を1つとして設定する可能性はありますか?

    var $self = {
        car_img_stage: $('.car_img_stage'),
        vis_home: $('#vis_home')
    }

その後、次のように使用します。

    $self.animate({
        'margin-left': '-1200px'
    }, 600)

ヘルプのためのThx。

4

4 に答える 4

6

同じことを実行する複合セレクターを作成できます。

$self = $('.car_img_stage,#vis_home');
于 2013-03-06T15:14:58.597 に答える
2

これを達成するためのいくつかの方法があります-

複数のセレクター

$self = $('.car_img_stage,#vis_home');

jQuery追加

//basic use
$self = $('.car_img_stage').add('#vis_home');

これらは両方とも同じ方法でアニメーション化されます。

$self.animate({
    'margin-left': -1200
}, 600);

Addは、セレクターをキャッシュして後で個別に使用する場合にも役立ちます。

//cached selectors
$car_img = $('.car_img_stage');
$vis_home = $('#vis_home');
$self = $car_img.add($vis_home);

$car_img.animate({
    'color': 'red'
}, 600);

$vis_home.animate({
    'height': 200
}, 600);

$self.animate({
    'margin-left': -1200
}, 600);

セレクターをそのままにして、ループすることもできます。この方法はお勧めしませんが、技術的には機能します。

var $self = {
    car_img_stage: $('.car_img_stage'),
    vis_home: $('#vis_home')
}

for (var each in $self){
    $self[each].animate({
        'margin-left': -1200
    }, 600);
}

この次のメモは元の質問とは関係ありませんが、複数のセレクターのアニメーションを扱うときに覚えておくべき重要なポイントです。

複数のセレクターをアニメーション化する場合、アタッチされたコールバックは、アニメーション化された各アイテムに対して起動することに注意してください。これは、リンクのリスト(リンクを含むラッパーではなく)をフェードアウトする場合などに関係します。この問題を回避するには、次のようにPromiseを使用できます。

$self = $('.car_img_stage,#vis_home');

$self.animate({
    'margin-left': -1200
}, 600, function(){
    //callback code here to happen for every animated element.
}).promise().done(function(){
    //callback code here, to happen once when ALL animations are complete.
});

これらのコールバック関数のいずれかまたは両方を省略できます。

単なるコールバック:

$self.animate({
    'margin-left': -1200
}, 600, function(){
    //callback code here to happen for every animated element.
});

ただの約束:

$self.animate({
    'margin-left': -1200
}, 600).promise().done(function(){
    //callback code here, to happen once when ALL animations are complete.
});
于 2013-03-06T15:29:26.833 に答える
1

あなたはこれを行うことができます:

var some_things = $('.car_img_stage, #vis_home');

some_things.animate({
    'margin-left': '-1200px'
}, 600)
于 2013-03-06T15:16:54.977 に答える
0

私からの追加の答えとして、私は他の解決策を見つけました、そしてそれはうまくいきました。

var car_img_stage = $('.car_img_stage'),
    vis_home = $('#vis_home');

var self = jQuery.makeArray(vis_home,car_img_stage);

とアクション

self.animate({
    // some animate action
}, 600);
于 2013-03-06T15:54:08.550 に答える