我有这个问题,我找不到任何激进的答案......
那么,是否有可能将jQuery两个变量设置为一个,就像这样:
var $self = {
car_img_stage: $('.car_img_stage'),
vis_home: $('#vis_home')
}
然后像这样使用:
$self.animate({
'margin-left': '-1200px'
}, 600)
请求帮助。
答案 0 :(得分:6)
你可以创建一个组合选择器来完成同样的事情:
$self = $('.car_img_stage,#vis_home');
答案 1 :(得分:2)
有几种方法可以实现这一目标 -
$self = $('.car_img_stage,#vis_home');
//basic use
$self = $('.car_img_stage').add('#vis_home');
这些都以相同的方式动画:
$self.animate({
'margin-left': -1200
}, 600);
如果您想要缓存选择器并稍后单独使用它们,添加也很有用。
//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);
}
下一个注释与原始问题无关,但在处理多个选择器的动画处理时要记住这一点。
请注意,在为多个选择器设置动画时,附加的任何回调都将触发每个动画播放。当说,淡出链接列表(而不是包含它们的包装器)或类似的东西时,这是相关的。要避免此问题,您可以使用a 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.
});
答案 2 :(得分:1)
你可以这样做:
var some_things = $('.car_img_stage, #vis_home');
some_things.animate({
'margin-left': '-1200px'
}, 600)
答案 3 :(得分: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);