Javascript 如何将两个变量设置为一个
我有这个问题,我找不到任何激进的答案 那么,有没有可能用jQuery将两个变量设置为一个,smth如下所示:Javascript 如何将两个变量设置为一个,javascript,jquery,arrays,variables,Javascript,Jquery,Arrays,Variables,我有这个问题,我找不到任何激进的答案 那么,有没有可能用jQuery将两个变量设置为一个,smth如下所示: var $self = { car_img_stage: $('.car_img_stage'), vis_home: $('#vis_home') } 然后像这样使用: $self.animate({ 'margin-left': '-1200px' }, 600) 谢谢你的帮助 您可以创建一个组合选择
var $self = {
car_img_stage: $('.car_img_stage'),
vis_home: $('#vis_home')
}
然后像这样使用:
$self.animate({
'margin-left': '-1200px'
}, 600)
谢谢你的帮助 您可以创建一个组合选择器来完成相同的任务:
$self = $('.car_img_stage,#vis_home');
您可以这样做:
var some_things = $('.car_img_stage, #vis_home');
some_things.animate({
'margin-left': '-1200px'
}, 600)
有几种方法可以实现这一点- 它们都以相同的方式设置动画:
$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);
}
下一个注意事项与原始问题无关,但在处理设置多个选择器的动画时,要记住这一点
请注意,当设置多个选择器的动画时,附加的任何回调都会为每个已设置动画的项目触发。这与淡出链接列表(而不是包含链接的包装器)或类似的内容有关。要避免此问题,您可以使用,如下所示:
$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.
});
作为我的补充回答,我已经找到了一些其他的解决方法,这是可行的
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);
但是我可以在一些动作之后使用其中一个吗?这就是为什么我像贝娄一样抱歉,但是你的英语坏了。我不清楚您想要实现什么。在变量明确区分它们为jQuery对象之前使用
$
。这不是一种不常见的做法,尽管我通常自己不会这样做。self
将全局窗口隐藏起来。self
,变量不是一个好名字。如果不将$.fn
中的所有方法复制到对象上,并让对象对每个方法执行一些附加逻辑,以确保在使用$self.animate()
时正确的元素是有针对性的,则无法实现您的请求。只需将它们缓存在两个单独的变量中,当您想同时影响这两个变量时,请使用one.add(theother).dosomething()
ok,但是,我可以将它们设置在某种数组中吗?像这样:var car\u img\u stage=$('.car\u img\u stage'),vis\u home=$(''vis\u home')代码>并在var self=$[vis_home,car_img_stage]之后使用代码>?否,因为无法从jQuery对象数组创建jQuery对象。它们都必须转换为一个dom元素,例如,var car\u img\u stage=$('.car\u img\u stage').get()代码>确定,thx用于解释确定,我发现:var self=jQuery.makeArray(vis\u home,car\u img\u stage)
并且它正在工作。添加了一个与您关于使用单独选择器的问题相关的部分。正如jbabey在上面指出的,您确实不想在此处使用“self”作为变量名。删除了我以前关于它不工作的评论。它在这里工作的例子-
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);