jQuery - 多个选择器&一次通话中的多个值

时间:2010-06-17 10:05:07

标签: javascript jquery optimization jquery-selectors

我想知道是否有一种在jQuery中使用多个选择器并为它们设置不同值的方法IN ONE CALL。

E.g:

$(selector1, selector2, selector3, ...).css({left:[532, 112, 453, ...]});

提前致谢

已编辑:为了清楚起见,您只能拨打 .css 一次。有可能吗?

再次编辑以澄清:我问,因为,例如,如果我调用animate()...我想保持一个唯一的同步调用/循环。

4 个答案:

答案 0 :(得分:3)

简短回答,不,你不能这样做,你调用的选择器和方法没有这样连接。选择器会为您提供一组元素,当发生这种情况时,.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
});

但这些元素按照它们出现在文档中的顺序,根本与选择器无关。

答案 1 :(得分:1)

我认为唯一的方法是使用.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>

答案 2 :(得分:0)

如果您只想更改一个css值:

var values = [532, 112, 453, ...];
$(selector1, selector2, selector3, ...).css('left', function (i, current) {
    return values[i];
});

为什么你想这样做呢?

jQuery将始终在内部遍历所有值。它不是魔术(并且您需要保证每个选择器的索引位置始终相同)。

答案 3 :(得分:0)

不 - 不可能(在你明确说明.css()被允许被调用一次之后)

请注意: 1. selector1,selector2,selector3可以匹配el1,el4,el5,el6 2.仅仅因为在一个函数调用后面完成某些事情并不意味着它是有效的 3.按照你的要求做事并不会使代码更容易阅读 - 这对于左派有意义,但对其他一些属性如何