2010-08-25 31 views
1

我有一個ul約有五個<li>項目。例如。如何使用jquery循環訪問每個li或div正面和反面

<ul> 
    <li>Step 1 : Take food</li> 
    <li>Step 2 : Go Around</li> 
    <li>Step 3 : Deliver</li> 
</ul> 

我也有喜歡

<a href="# id="prev"> Previous</a> 

<a href="#" id="next"> Next</a> 

我必須拿出第一li在第一環節。然後當點擊next鏈接時,它現在應該顯示2nd <li>等等。以前的鏈接也一樣。請幫忙。

+1

http://jquery.malsup.com/cycle/lite/ – Marko 2010-08-25 10:14:21

回答

0

如果只顯示一個元素,所有你需要做的是使用DOM樹作爲搜索。如果你想要下一個元素,找到當前正在顯示的元素,隱藏它,並顯示它的下一個兄弟。如果您正在進行之前的操作,則隱藏當前項目並選擇之前的同級。

如果你不確定如何做到這一點,只是Google左右DOM導航。這不是太糟糕。

如果可能的話,我會簡單地爲你的LI(在id屬性中)使用一些命名約定,你可以很快地使用jQuery進行選擇。例如,如果你顯示的元素將有一個其他類不具備的類,可以使用jQuery快速選擇該元素,獲取其id,並以某種方式修改它以選擇上一個或下一個元素。

0

爲boerema說,這些方針的東西(它的未經測試!) 把「選擇」的啓動爲被示

<ul> 
<li>Step 1 : Take food</li> 
<li class="selected">Step 2 : Go Around</li> 
<li>Step 3 : Deliver</li> 
</ul> 


$("#prev").click(function(){ 
    $(".selected").hide().removeClass("selected").prev().show().addClass("Selected"); 
}); 

$("#next").click(function(){ 
    $(".selected").hide().removeClass("selected").next().show().addClass("Selected"); 
}); 
+0

Aww,我喜歡有人試圖編程自己。哈哈 – Boerema 2010-08-25 10:24:57

0

這裏是一個快速演示鋰類:http://jsbin.com/oduli4

var width = 500; 
    var height = 250; 
    var slide = 0; 
    var speed = 500; 
    var size = 0; 
$(document).ready(function() { 

    size = $('#slider').find('li').length; 

    $('#slider').find('ul').width(width * size).height(height); 
    $('#slider li, #slider img').width(width).height(height); 

    $('#next').bind('click',function() { 
    if(slide > img_width * (size - 1) *(-1)) { 
      slide -= width; 
     slider(slide); 
    } 
    }); 
    $('#prev').bind('click',function() { 
    if(slide < 0) { 
     slide += width; 
     slider(slide); 
    } 
    }); 
}); 


function slider(slideMargin) { 
    $('#slider ul').stop().animate({'left':slideMargin}, speed); 
} 
+0

我只是覺得那個插件對於他想做的事情來說是一個很大的開銷。但也許我只是不知道他的應用程序是什麼。 – Boerema 2010-08-25 10:28:46

4

下面是完整的代碼:

$(document).ready(function() 
{ 
    var ul = $('ul'); 

    // hide all li 
    ul.find('li').hide(); 

    // make first li as current 
    ul.find('li').first().addClass('current').show(); 

    // setup previous click handler 
    $('a#prev').click(function() 
    { 
     var prev = ul.find('li.current').prev(); 

     if(prev.length) 
     { 
      ul.find('li.current').removeClass('current').hide(); 
      prev.addClass('current').show(); 
     } 
    }); 

    // setup next click handler 
    $('a#next').click(function() 
    { 
     var next = ul.find('li.current').next(); 

     if(next.length) 
     { 
      ul.find('li.current').removeClass('current').hide(); 
      next.addClass('current').show(); 
     } 
    }); 

});