2

问题 1:我正在尝试使用 eq() 将相同的分类 div 元素的 css 操作到它们的顺序,但我无法访问 eq() 值。

问题2:用switch方法试过这个。有没有办法用较少的代码(如 for 循环)来实现这一进展?

这是演示

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;
 }

});
4

3 回答 3

2

检查这个http://jsfiddle.net/Aw39W/4/

您没有为 X 和项目分配值

$('.ele').each(function(X) {
    var eleH = 100;
    var add = 10;
    
    $('.ele').eq(X); //trying to get value here

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

});
于 2012-06-29T23:27:46.267 回答
2

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

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

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

于 2012-06-29T23:30:55.080 回答
0

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

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

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

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

于 2012-06-29T23:31:40.633 回答