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

jquery n选择和设置间隔

  •  0
  • Tim  · 技术社区  · 16 年前

    jQuery查询:

     var i=1;
    
     setInterval(function() {
      $(".portfolio :nth-child("+i+")").click();
      if (i<5) {i++;} else {i=1;}
    
     }, 1000);
    

    HTML格式:

    <div class="portfolio"> 
      <ul> 
       <li><img src="images/4.jpg" alt="4" id="promo_one"></li> 
       <li><img src="images/1.jpg" alt="1" id="promo_two"></li> 
       <li><img src="images/2.jpg" alt="2" id="promo_three"></li> 
       <li><img src="images/3.jpg" alt="3" id="promo_four"></li> 
      </ul> 
     </div> 
    

    提前感谢:)

    7 回复  |  直到 16 年前
        1
  •  1
  •   Nick Craver    16 年前

    而不是 :nth-child() 你可以用 .eq() 这里,像这样:

    var i=1;
    setInterval(function() {
      $(".portfolio ul li img").eq(i).click();
      i = i==3 ? 0 : i + 1;
    }, 1000);
    

    您的选择器也应该转到 <img> (或省略 img 如果要单击 <li> .eq(index) .click() 是的。

        2
  •  1
  •   Community Mohan Dere    9 年前

    $(".portfolio > ul > li:nth-child("+i+")").click();
    

    …例如,你在寻找 li 那是个孩子 ul 那是个孩子 .portfolio . 这些是子选择器。您可能会使用后代选择器来代替,但是我认为(假设)子选择器会更有效率,因为它们要做的搜索更少(当然,如果你改变结构,它们也会变得更脆。)

    patrick's point 关于你的 i<4 比较一下,可能差一个。

        3
  •  1
  •   user113716    16 年前

    我想你想看看 i 4 因为你有4个链接。

    if (i<4) {i++;} else {i=1;}
    

    :nth-child 是一个 1 4 小于 5 ,当你到达 4 5 ,但是没有 :nth-child(5) .

    :n个孩子 也在正确的元素上。

    例子: http://jsfiddle.net/JBt6b/

        4
  •  0
  •   jAndy    16 年前
    var i=1;
    
    setInterval(function(){
       $('.portfolio').find('img[alt=' + i + ']').trigger('click');
       if(i < 4) i++; else i=1;
    }, 1000);
    

    当然,只有ALT属性始终存在时才有意义。

        5
  •  0
  •   g.d.d.c    16 年前

    var i=1;
    
    setInterval(function() {
      $(".portfolio ul :nth-child("+i+")").click();
    
      if (i<5) {i++;} else {i=1;}
    
    }, 1000);
    

    在你的例子中 .portfolio 没有n个孩子,只有1个。

        6
  •  0
  •   Kekoa    16 年前

    我认为您很接近(我不确定到底是什么不起作用),但您可能希望将选择器更改为:

    ".portfolio :nth-child("+i+")"
    

    收件人:

    ".portfolio ul li:nth-child("+i+")"
    

        7
  •  0
  •   tvanfosson    16 年前

    我会预先计算许多项目,并使用模块化算法在图像中旋转。

    var images = $('.portfolio img').;
    var count = images.length;
    var lastClicked = count - 1;
    
    setInterval( function() {
        var next = ++lastClicked % count;
        images.eq(next).click();
    }, 1000);