0

Need somebody to run an eye over this please. Sometimes it works on jsfiddle, sometimes it doesn't! Any improvements welcome.

http://jsfiddle.net/hotdiggity/JBqB3/8/

<ul id="list">
 <li><a title="title" href="#">Lorem ipsum dolor sit amet</a>
 </li>
 <li>
  <a title="title" href="#">Consectetur adipiscing elit
  </a>
 </li>
 <li >
  <a title="title" href="#">Ipsum dolor sit amet</a>
 </li>
 <li>
  <a title="title" href="#">Lorem ipsum dolor sit amet</a>
 </li>
 <li>
  <a title="title" href="#">Ipsum dolor sit amet</a>
 </li>
</ul>​

Here's the jQuery bit:

var more = $('<li><a class="more" href="">Show more</a></li>');
var less = $('<li><a class="less" href="">Show less</a></li>');

$('ul#list').children('li:gt(2)').hide();
$('ul#list').append(more);


$('.more').click(function(){
     $(this).parent().hide().siblings('li').show();
     $('ul#list').append(less);
    return false;
});

$('.less').click(function(){
     $('ul#list').children('li:gt(2)').hide();
     $('ul#list').append(more); 
    return false;
});
4

2 回答 2

0

检查这个: http: //jsfiddle.net/JBqB3/17/ 解决你的问题的另一种方法。我不是 100% 确定这是否是您要查找的内容,因为我从列表中提取了按钮(我认为让它不是 li 元素本身的更好方法。您当然也可以使用可点击的而不是那个标准按钮。html

<ul id="list">
 <li><a title="title" href="#">Lorem ipsum dolor sit amet</a>
 </li>
 <li>
  <a title="title" href="#">Consectetur adipiscing elit
  </a>
 </li>
 <li >
   <a title="title" href="#">Ipsum dolor sit amet</a>
 </li>
 <li>
  <a title="title" href="#">Lorem ipsum dolor sit amet</a>
 </li>
 <li>
  <a title="title" href="#">Ipsum dolor sit amet</a>
 </li>
</ul>
<button class="btn_more">show more</button>
<button class="btn_less">show less</button>

​ CSS

.btn_less{
    display:none;
}​

JS

$(document).ready(function(){
    $('ul#list').children('li:gt(2)').hide();
    $('.btn_more').click(function(){
        $('ul#list').children().show();
        $('.btn_more').hide();
        $('.btn_less').show();
    });
    $('.btn_less').click(function(){
        $('ul#list').children('li:gt(2)').hide();
        $('.btn_less').hide();
        $('.btn_more').show();
    });
});
于 2012-12-14T13:47:43.467 回答
0

这似乎有效

$(document).ready(function(){
    var more = $('<li class="more"><a href="">Show more</a></li>');
    var less = $('<li class="less" ><a href="">Show less</a></li>');

    $('ul#list').children('li:gt(2)').hide();
    $('ul#list').append(more);

    $('body').on('click','.more',function(e){
        e.preventDefault();
        $(this).remove();    
        $('ul#list').children().show();
        $('ul#list').append(less);
        return false;
    });

    $('body').on('click','.less',function(e){
        e.preventDefault();
        $(this).remove();
        $('ul#list').children('li:gt(2)').hide();
        $('ul#list').append(more);
        return false;
   });
});

请注意,我更改了删除和隐藏的顺序。

e.preventDefault();只是停止作为链接的链接,它不是 100% 必要的,但我还是喜欢将它粘贴在那里,以防 href 中包含 # 以外的内容。有关更多信息,请阅读http://api.jquery.com/event.preventDefault/

于 2012-12-15T22:29:40.723 回答