jquery(each和eq)在switch中一起使用

时间:2012-06-29 23:21:43

标签: jquery indexing each

问题1: 我试图用eq()操纵相同的分类div元素的css到他们的顺序但我无法访问eq()值。

问题2: 尝试用切换方法。有没有办法用较小的代码来完成这个进程,比如for循环?

this is DEMO

HTML

<div id="a" class="ele">0</div>
<div id="b" class="ele">1</div>
<div id="c" class="ele">2</div>

jQuery的

$('.ele').each(function() {
var eleH = 100;
var add = 10;

 $('.ele').eq(X); //trying to get value here

 switch(X) {
  case 0:
    $('.ele').css({'height': (eleH + add) + 'px'}); // #a { height:110px}
    break;
  case 1:
    $('.ele').css({'height': (eleH + (add*2)) + 'px'}); // #b { height:120px}
    break;
  case 2:
    $('.ele').css({'height': (eleH + (add*3)) + 'px'}); // #c { height:130px}
    break;
 }

});

3 个答案:

答案 0 :(得分:2)

我不确定你想做什么,但如果你想根据它的位置更改CSS propierty,你可以这样做:

$('.ele').each(function(i) {
    $(this).css('height', 100 + (10*i));
});

以下是工作版本:http://jsfiddle.net/Aw39W/6/

答案 1 :(得分:1)

检查这个

http://jsfiddle.net/Aw39W/4/

您没有为X和项目分配值

答案 2 :(得分:0)

不确定你要在这里实现什么,因为你似乎不是在元素本身上设置高度,而是在其他元素project上设置高度。快速连续设置和覆盖它的高度3次只会看起来只有最后的循环迭代发生。

无论如何,从理论上讲,您的代码可以像这样进行优化。值得记住的是each()传递了一个参数,表示正在处理的元素的索引。

var height = 100, add = 10;
$('.ele').each(index) {
    project.css({height: height + (add * index)});
});

另请注意,我在循环外声明维度变量 - 无需继续重新定义这些变量。