jQuery - 一次调用中的多个选择器和多个值

问题描述:

我想知道是否有一种方法可以在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 
}); 

不过,这些元素都在它们出现的文件,不相关的选择,在所有的顺序。

+0

我问,因为如果,例如,我叫animate()...我想保持一个独特的同步呼叫/循环。 – ozke 2010-06-17 10:35:51

+0

@ozke - '.animate()'也呼吁各* *元素,它们都是独立的动画,尽管他们可能有* *开始在同一时间......因为,你能澄清一点? – 2010-06-17 10:42:51

+0

我猜.animate使用setInterval函数。那么,我想知道是否有一种方法对所有选择器/属性使用setInterval一次。其他方式,不可能保持动画的完美同步。 – ozke 2010-06-17 10:49:27

我认为要做到这一点的唯一方法是使用.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> 
+0

但是你打电话的.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将始终在内部遍历所有值。这不是魔术(并且您需要保证每个选择器的索引位置始终相同)。

+0

正如我在我的答案中指出的...顺序不是你在这里想的,它是'document',而不是'selector'的基础。鉴于此,我不确定它会如何有用...... – 2010-06-17 10:25:47

不 - 不可能(澄清之后。CSS()允许被调用一次)

请注意:1。 selector1,选择器2,selector3可以匹配EL1,EL4,EL5,EL6 2.仅仅因为一些被后面一个函数调用来完成不意味着它是有效的 3.做你的要求不使代码更易于阅读 - 这是有道理的,但留下怎么样的一些其他属性