2013-02-18 146 views
0

我知道这是基本的东西,但我无法弄清楚它...将函数应用于特定元素

如何将css更改应用于多个元素?目前,这只是为第一个工作,但没有显示任何错误。

function elemInit(){ 

    var elem1 = jQ('#elem1'); 
    var elem2 = jQ('#elem2'); 

    jQ(elem1, elem2).each(function(){ 
     jQ(this).css({ 
      'margin-left': '-' + jQ(this).width()/2 + 'px' 
     }); 
    }); 

}; 

elemInit(); 

jQ是为了确保没有冲突。

回答

3

jQuery选择工作像CSS选择器,也css方法使用each方法在内部,您可以编写:

jQ('#elem1, #elem2').css('marginLeft', function(i, oldMarginLeft) { 
    return '-' + jQ(this).width()/2 + 'px'; 
}); 
+0

有趣的方法。我忘记了为该值声明一个函数,并且不知道每个方法的CSS默认值。谢谢。 – verism 2013-02-18 14:31:17

+0

@verism欢迎您。 – undefined 2013-02-18 14:38:01

2
var jQelem1and2 = jQ('#elem1, #elem2'); 

jQelem1and2.each(function(){ 
    jQ(this).css({ 
     'margin-left': '-' + jQ(this).width()/2 + 'px' 
    }); 
}); 

还是我错过了什么?

+0

不,完美的作品! – verism 2013-02-18 14:30:01

+0

@verism太好了。我会建议未定义的方法。它做了类似于(内部)的东西,但看起来更清洁。 – Johan 2013-02-18 14:32:19

0

试试这个

var elem1 = '#elem1'; 
var elem2 = '#elem2'; 
jQ(elem1, elem2).each(function(){ 
    jQ(this).css({ 
     'margin-left': '-' + jQ(this).width()/2 + 'px' 
    }); 
}); 
1

你用来连接两个jQuery的对象的语法 - - $($obj1, $obj2) - 不正确;它确实something entirely different

从直接匹配你需要的元素合作的其他解决方案

除此之外,一般的解决方案是使用.add

$obj1.add($obj2).each(...) 

最后,真的没有必要.each这里 - .css直接将工作也是如此。

+0

感谢您的信息 - 我尝试添加(),从另一个例子复制,但没有成功。 – verism 2013-02-18 14:35:00

+0

你在上面的函数中试过'elem1.add(elem2)',它没有用? – Jon 2013-02-18 14:36:45

+0

我_think_我试过'$(elem1).add(elem2)' - iirc。 – verism 2013-02-18 14:38:45

相关问题