如何将两个变量设置为一个

时间:2013-03-06 15:13:54

标签: javascript jquery arrays variables

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

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

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

然后像这样使用:

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

请求帮助。

4 个答案:

答案 0 :(得分:6)

你可以创建一个组合选择器来完成同样的事情:

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

答案 1 :(得分:2)

有几种方法可以实现这一目标 -

Multiple selectors

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

jQuery add

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