2011-12-29 35 views
1

正在jQuery noob我有一個問題,我不知道如何解決它:( 我有ul標籤和幾個裏面的標籤 我試圖完成這個:在第一點擊一個按鈕的選擇上點擊第一李標籤,選擇 L1標籤等等... 你可以看到,這是行不通的預期(它選擇第一和第二個標籤) 有人可以幫助我或指向正確的方向嗎?這是jsFiddle鏈接:http://jsfiddle.net/aH8w2/謝謝!!!在每次點擊選擇下一個標籤

​​
+0

這裏是jsfiddle鏈接:http://jsfiddle.net/aH8w2/ – 2011-12-29 16:07:30

+0

謝謝你的小提琴。當你發現有效的東西時,一定要接受答案。 – 2011-12-29 16:21:37

回答

2

試試這個:

$("button").click(function(){  

    $('.red').removeClass('red').next('li').addClass('red'); 

}); 
+0

謝謝你的男人! – 2011-12-29 16:09:00

+2

看看Josh Smith的回答。它可能對你更好。 – 2011-12-29 16:14:11

+0

@SergeiTulentsev在jsFiddle中嘗試了這個,似乎沒有工作:http://jsfiddle.net/joshsmith/qZLxc/2/ – 2011-12-29 16:15:12

2

的另一種方式,再次跳轉到列表的開頭,當達到結束的時候:

var $lis = $('ul > li'); 

$("button").click(function(){ 
    var $selected = $('.red').removeClass('red'); 
    ($selected.next().length > 0 ? $selected.next() : $lis.first()).addClass('red'); 
}); 

或者短一點:

($selected.next().get(0) || $lis[0]).className += 'red'; 

DEMO

+0

非常感謝你! – 2011-12-29 16:54:48

+0

請點擊旁邊的勾號框,選擇最能幫助您的答案。 – 2011-12-29 18:09:59

0

試試這個:

$("button").click(function(){ 
var current = $('ul li.red'); 
current.first().next('li').addClass('red'); 
current.removeClass('red'); 
}); 

這假定您有至少具有一個li那就是「紅」。

2

DEMO

$("button").click(function(){  
    if($('.red').length > 0) { 
     $('.red').removeClass('red').next().addClass('red'); 
    } else { 
     $('li:first').addClass('red'); 
    } 
}); 

你也不需要在你的第一li.first。 jQuery可以做li:first這將選擇第一個匹配的項目。

0

試試這個:

$(document).ready(function(){ 
    $("button").click(function(){  
     if($('.red').length == 0 || $('.red').next().length == 0){ 
      $('.red').removeClass('red'); 
      $('.first').addClass('red'); 
     }else{ 
      $('.red').removeClass('red').next().addClass('red'); 
     } 
    }); 

}); 

這需要在第一次點擊,以及隨後的每次點擊的照顧。即使到了最後,也要回到第一個。