2

我有这个问题,我找不到任何激进的答案......

那么,有没有可能用 jQuery 将两个变量设置为一个,像这样:

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

然后像这样使用:

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

谢谢帮助。

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);

如果您想缓存选择器并稍后单独使用它们,添加也很有用。

//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);
}

下一个注释与原始问题无关,但在处理多个选择器的动画时要记住这一点。

请注意,在为多个选择器设置动画时,附加的任何回调都将为每个 ANIMATED 项目触发。当说,淡出链接列表(而不是包含它们的包装器)或类似的东西时,这是相关的。为避免此问题,您可以使用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 回答