那是因爲你的選擇是太普通。
$('ul.menu li') //--> will return all li's of the menu
.next() //--> will return all the next li's to the selected li's
你可以,而不是主動加入到第一li
下手和旁邊選擇next
點擊$('ul.menu li:active')
刪除當前的活動之一。併爲以前做同樣的事情。
你可以這樣做:
HTML:
<ul class="menu">
<li class="active">1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
</ul>
<a class="traverse" data-action="prev" href="#">previous</a>
<a class="traverse" data-action="next" href="#">next</a>
JS:
$(document).ready(function(){
var $menu = $('ul.menu'),
$menus = $menu.children('li');
$('a.traverse').click(function(){
var action = $(this).data('action'), //Get the action prev/next
jump = (action === 'next' ? 'first' : 'last'), //based on action determine the jump to switch to first or last when reached the end to enable a cycle
$active = $menus.filter('.active').removeClass('active'), //remove current active li's class
$target = $active[action](); //get the target applying the action
if ($target.length === 0){ //If no target i.e when it is at first or last and clicking on prev or next reptly
$target = $menus[jump](); //get the next element using the jump
}
$target.addClass('active'); //add class to the target
});
});
Demo
來源
2013-12-13 21:19:00
PSL
你選擇了所有列表項目,然後選擇下一個列表項目,這將是所有列出除第一個之外的項目。你的邏輯/選擇器是有缺陷的。 –
「...在它旁邊」旁邊什麼? – isherwood