我有一个ul
由 PHP 函数生成的。
<ul>
<li>Item 1</li>
<li>Item 2</li>
<li>Item 3</li>
<li>Item 4</li>
<li>Item 5</li>
</li>
我想以这种方式“限制”结果并显示列表(在 HTML 页面中)
Item1 - Item2 - 3 more...
鼠标悬停后必须显示“3 more”。
那可能吗?我怎么能用 jQuery 做到这一点?
我有一个ul
由 PHP 函数生成的。
<ul>
<li>Item 1</li>
<li>Item 2</li>
<li>Item 3</li>
<li>Item 4</li>
<li>Item 5</li>
</li>
我想以这种方式“限制”结果并显示列表(在 HTML 页面中)
Item1 - Item2 - 3 more...
鼠标悬停后必须显示“3 more”。
那可能吗?我怎么能用 jQuery 做到这一点?
首先,我们需要说明我们的限制和更多计数器:
var limit = 3
var more = 0
然后我们可以隐藏所有li
超出我们限制的s:
$("#tricky_list li").each(function(index) {
if(index >= limit){
$(this).hide();
more++;
}
});
如果有任何li
标签隐藏地点信息:
if(more){
$("#tricky_list").append('<li class="more">' + more + ' more</li>');
}
让我们让它成为一个触发器和命令来显示 hidden li
s on mouseover
。
$("#tricky_list li.more").live("mouseover", function(){
$("#tricky_list li").each(function(index) {
$(this).show();
});
$("#tricky_list li.more").hide()
});
这样你就有了干净的html&css,一切都由js无缝完成。
首先,您可以使用此 CSS
ul li:nth-child(-n+5) {display:none} /* Shows only first 5*/
.showAll {display:block;}
然后在悬停时你可以做..
$('ul')
.mouseover(function(){
$(this).find('li').filter(':not(:visible)').addClass('showAll');
//shows hidden li's
})
.mouseout(function(){
$(this).find('li.showAll').removeClass('showAll');
//hides those li's
});
var numToShow = 3;
var moreLi;
$('ul').children('li').hide().each(function() {
if ($(this).index() < numToShow) {
$(this).show();
}
}).parent('ul').append('<li><a href="#" id="showMore">More</a></li>');
$('#showMore').click(function() {
moreLi = $(this).parent('li');
moreLi.siblings().show();
moreLi.remove();
});
可能有一种更有效的方法来编写它,而且它肯定会更健壮,但这是您正在寻找的快速方法。
示例:http: //jsfiddle.net/3Ak2X/
这应该可以帮助您入门。