我想知道是否有一种方法可以在jQuery中使用多个选择器,并为它们设置不同的值IN ONE CALL。jQuery - 一次调用中的多个选择器和多个值
例如为:
$(selector1, selector2, selector3, ...).css({left:[532, 112, 453, ...]});
在此先感谢
编辑:只是要清楚,你只能叫的.css一次。可能吗?
再次编辑澄清:我问,因为如果,例如,我叫animate()...我想保持一个独特的同步调用/循环。
我想知道是否有一种方法可以在jQuery中使用多个选择器,并为它们设置不同的值IN ONE CALL。jQuery - 一次调用中的多个选择器和多个值
例如为:
$(selector1, selector2, selector3, ...).css({left:[532, 112, 453, ...]});
在此先感谢
编辑:只是要清楚,你只能叫的.css一次。可能吗?
再次编辑澄清:我问,因为如果,例如,我叫animate()...我想保持一个独特的同步调用/循环。
简短的回答,不,你不能这样做,选择器和你调用的方法没有这样连接。选择器为你提供了一组元素,当发生这种情况时.css()
(或任何其他)函数不知道你所在的元素在选择器中的位置。
如果你仔细想想,它可能是全部职位,那该怎么办?
例如:
$("#div, .class1, .class2").css({left:[532, 112, 453]});
我应该做这在这个HTML:
<div id="div" class="class1 class2"></div>
<div id="div2" class="class2 class1"></div>
你看它是如何得到真正的混乱很快,所以没有,没有这样的支持。
为了公平起见,.css()
does take a functio N,就像这样:
$("#div, .class1, .class2").css('left', function(i, val) {
//return new left property here
});
不过,这些元素都在它们出现的文件,不相关的选择,在所有的顺序。
我认为要做到这一点的唯一方法是使用.each()
例如:
$(selector1, selector2, selector3).each(function(idx, element){
switch(idx)
{
case : 0
$(element).css('left', '345');
break;
case: 1
$(element).css('left', '456');
break;
}
});
编辑:
我能拿出最好的是这样的:
$(document).ready(
function() {
$("div#hello, div#hello1").css('background-color', function(idx, element){
switch(idx)
{
case 0:
return 'red'
case 1:
return 'green'
}
});
});
HTML :
<div id="hello">
<span>test</span>
</div>
<div id="hello1">
<span>test2</span>
</div>
但是你打电话的.css serveral的时代,而不是一个。 – ozke 2010-06-17 10:13:45
如果只想改变一个CSS值:
var values = [532, 112, 453, ...];
$(selector1, selector2, selector3, ...).css('left', function (i, current) {
return values[i];
});
你为什么要那样做呢?
jQuery将始终在内部遍历所有值。这不是魔术(并且您需要保证每个选择器的索引位置始终相同)。
正如我在我的答案中指出的...顺序不是你在这里想的,它是'document',而不是'selector'的基础。鉴于此,我不确定它会如何有用...... – 2010-06-17 10:25:47
不 - 不可能(澄清之后。CSS()允许被调用一次)
请注意:1。 selector1,选择器2,selector3可以匹配EL1,EL4,EL5,EL6 2.仅仅因为一些被后面一个函数调用来完成不意味着它是有效的 3.做你的要求不使代码更易于阅读 - 这是有道理的,但留下怎么样的一些其他属性
我问,因为如果,例如,我叫animate()...我想保持一个独特的同步呼叫/循环。 – ozke 2010-06-17 10:35:51
@ozke - '.animate()'也呼吁各* *元素,它们都是独立的动画,尽管他们可能有* *开始在同一时间......因为,你能澄清一点? – 2010-06-17 10:42:51
我猜.animate使用setInterval函数。那么,我想知道是否有一种方法对所有选择器/属性使用setInterval一次。其他方式,不可能保持动画的完美同步。 – ozke 2010-06-17 10:49:27