我该怎么做?
$(function() {
var foo = $('#foo'),
bar = $('#bar');
$('body').click(function() {
$(foo,bar).css({color: 'red'});
});
});
演示:http://jsfiddle.net/each/RGZ4Z/ - 只有foo变红
编辑:我能否强调一点,我知道我可以轻松做到:
$('#foo,#bar').css({color: 'red'});
我只是询问变量的使用......
答案 0 :(得分:8)
可能你想要的是:
foo.add(bar).css({color: 'red'});
这是一段演示代码,展示了它的工作原理:http://jsfiddle.net/jfriend00/3Ep6J/。
根据您的需要,我可以考虑三种选择:
var items = $('#foo, #bar')
$('#foo, #bar').css({color: 'red'});
foo.add(bar).css({color: 'red'});
并且,每个选项的更多细节:
1)您可以在开头创建一个jQuery对象,其中包含两组对象:
var objs = $('#foo, #bar');
然后再这样做:
objs.css({color: 'red'});
2)或者只是一次完成所有事情:
$('#foo, #bar').css({color: 'red'});
3)或者,如果你已经有foo和bar的单独jQuery对象,你可以将一个jQuery对象中的项添加到另一个jQuery对象,然后执行你的操作:
var foo = $('#foo'),
bar = $('#bar');
然后,执行此操作:
foo.add(bar).css({color: 'red'});
注意:有点违反规范,选项3)不修改foo
jQuery对象,add
方法返回一个新的jQuery对象,其中添加了bar
项。
答案 1 :(得分:2)
+1给jfriend00的回答,但我想我会先解释为什么你的第一个没有工作。
jQuery "constructor"有三个方法签名(基本上):
$(selector[, context])
用于从现有元素创建jQuery对象$(html[, ownerDocument])
用于创建新元素$(callback)
作为$(document).ready(callback)
您正在使用第一个选项,而selector
是一个预先存在的jQuery对象(很好),但是通过添加bar
参数,这意味着它将该元素视为上下文。基本上:“给我一个包含所有元素foo
的结果集,它们存在于元素bar
”中。
另外,如果你知道你已经在一个变量中有了一个jQuery对象,那么将它再次包含在$()
中是浪费的。
bar = $('#bar');
$(bar).show(); // unnecessary!
bar.show(); // better!
为了帮助我记住,我总是用$:
作为jQuery变量的前缀$bar = $("#bar");
$bar.show(); // less ambiguous! woo!