2013-01-09 167 views
6

這裏是an example of what I have already僅顯示最近的列表元素

主要功能的作品,但現在我需要做的控制器列表較小,所以它適合更好的屏幕,因爲它的固定位置。

所以,我認爲它應該顯示活動項目和前兩個活動項目的下三個列表項目。

像這樣的工作,但我覺得應該有更短,更方便易方式:

//Display closest items 
$('#historyController li.active').prevAll('li:not(.first)').hide().slice(0,2).show(); 
$('#historyController li.active').nextAll('li:not(.last)').hide().slice(0,3).show(); 

爲更好的性能重新分解當前代碼任何提示將有幫助。

+2

'像這樣的工作,但我覺得應該有更短,更方便的方式「或」重新分解當前代碼以獲得更好性能的任何提示也會有所幫助「如果沒有任何問題被破壞,並且您的代碼可以正常工作,但您只是尋找替代或更好的appr oach,這個問題可能會更好的[Stackexchange - 代碼評論](http://codereview.stackexchange.com) – Nope

+0

不知道我是否完全理解,但'最接近'的方法可以幫助你在這裏:http:// api .jquery.com/closest/ – Paddy

回答

0
<ul> 
    <li>list item 1</li> 
    <li>list item 2</li> 
    <li class="third-item">list item 3</li> 
    <li>list item 4</li> 
    <li>list item 5</li> 
</ul> 

$('li.third-item').next().css('background-color', 'red'); 

鏈接的文檔next()

這所有的項目,你可以使用tree-traversal

0

使用下面的jQuery函數。

<ul id="one" class="level-1"> 
<li class="item-i">I</li> 
<li id="ii" class="item-ii">II 
<ul class="level-2"> 
<li class="item-a">A</li> 
<li class="item-b">B 
<ul class="level-3"> 
<li class="item-1">1</li> 
<li class="item-2">2</li> 
<li class="item-3">3</li> 
</ul> 
</li> 
<li class="item-c">C</li> 
</ul> 
</li> 
<li class="item-iii">III</li> 
</ul> 

jQuery函數是..

$('li.item-a').closest('ul').css('background-color', 'red'); 
+0

這似乎不是Algeron正在尋找的東西。張貼答案前請仔細閱讀問題。 – Ren

0

你可以嘗試使用.end(),爲了節省來回移動:

$('#historyController li.active').prevAll('li:not(.first)').hide().slice(0,2).show().end().end().nextAll('li:not(.last)').hide().slice(0,3).show();