2011-02-19 32 views
5

切換他們假設我有隱藏所有li元素,並顯示在第一2和由按鈕

<ul> 
    <li>2</li> 
    <li>3</li> 
    <li>4</li> 
    <li>5</li> 
</ul> 

我想jQuery代碼隱藏所有<li>然後顯示拳頭,第二個 然後append()額外<li>more</li>那用於切換隱藏的li。

+1

你失去了我對 '追加...切換' – xtofl

+1

@xtofl - 希望有一個額外的'li'含有單詞'more'即用於切換2個隱藏列表元素的可見性。至少,我是這麼讀的。 – tvanfosson

+0

@tvanfosson你的偉大 –

回答

18

這應該做到這一點..

// hide all li and then show the first two 
$('ul li').hide().filter(':lt(2)').show(); 

// append a li with text more that on click will show the rest 
$('ul').append('<li>more</li>').find('li:last').click(function(){ 
    $(this).siblings(':gt(1)').toggle(); 
}); 

演示在http://jsfiddle.net/gaby/tNGxN/2/


更新從更添加更改文本,以少..

$('ul li') 
    .hide() 
    .filter(':lt(2)') 
    .show(); 

$('ul') 
    .append('<li><span>more</span><span class="less">less</span></li>') 
    .find('li:last') 
    .click(function(){ 
     $(this) 
      .siblings(':gt(1)') 
      .toggle() 
      .end() 
      .find('span') 
      .toggle(); 
    }); 

需要.less{display:none}

演示的CSS規則:http://jsfiddle.net/gaby/tNGxN/3/

+0

當再次點擊'more'鏈接時,它如何隱藏它們? – tvanfosson

+1

@tvanfosson,它不...解釋切換部分只顯示..看着它.. –

+1

@ tvanfosson,固定,但它開始變得一團糟:) –

5

這是你想找的東西嗎?

$('li').hide() 
     .slice(0,1) 
     .addClass('fixed') 
     .show(); 
$('<li class="toggle">more</li>') 
     .appendTo('ul') 
     .click(function() { 
      $('li:not(.toggle,.fixed)').toggle(); 
     }); 
+0

html請>>>>>>>>>>> –

+0

@moustafa - 我只是用你的HTML。 – tvanfosson

相關問題