これを達成するためのいくつかの方法があります-
複数のセレクター
$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.
});