代码之家  ›  专栏  ›  技术社区  ›  meo

根据索引选择一系列DOM元素

  •  2
  • meo  · 技术社区  · 14 年前

    我需要根据那里的索引选择jquery元素的特定授权,使用 :eq() (或者如果你有更好的解决方案的话)

    我的HTML结构如下:

    <ul>
      <li>slide0</li>
      <li>slide1</li>
      <li>slide2</li>
      <li>slide3</li>
      <li>slide4</li>
    </ul>
    

    当用户将幻灯片悬停在幻灯片2上时,我需要选择 li:eq(0), li:eq(1) li:eq(3), li:eq(4) 分开,因为他们有不同的动画。

    这是我的解决方案,但这感觉有点乱…

    var $slides, theOthers, slidesTotal;
    $slides = $('ul > li');
    slidesTotal = $slides.length;
    theOthers = function(slideIndex ,slidesTotal){
       var before = [], after = [], i=0;
       while (i<=slideIndex - 1){
           before[i] = ":eq(" + i + ")"
           i++
       };
       while (i <= slidesTotal) {
           after[i] = ":eq(" + i + ")"
           i++
       };
       return [ before.join(",") , after.join(",") ]
    }
    
    $slides.mouseenter(function(){
       var groups, slideIndex, $that = $(this);
       slideIndex = $that.index();
       groups = theOthers(slideIndex, slidesTotal);
       $slides.filter(groups[0]).dosomething();
       $slides.filter(groups[1]).dosomethingelse()
    })
    

    对于jquery,有没有更简单的方法可以做到这一点?

    2 回复  |  直到 12 年前
        1
  •  6
  •   Nick Craver    14 年前

    .prevAll() .nextAll()

    $('ul > li').mouseenter(function() {
       $(this).prevAll().dosomething();
       $(this).nextAll().dosomethingelse();
    });
    

        2
  •  0
  •   Rostyslav Dzinko Ankit    12 年前
    jQuery('someElm ~ .someClass')
    

    .someClass seomeElm