我有一个事件安排,ul有固定的高度和溢出隐藏,li也有固定的高度。一次只能看到四个。我需要弄清楚如何在单击相应按钮的情况下向上和向下滚动列表。
我确信有插件可以做到这一点,但为了更好地理解jQuery / JS我想自己做 - 但需要一些帮助。 HTML / CSS在这里http://jsfiddle.net/DirtyBirdDesign/BJdJ7/
我已将其分解为以下需求:
我错过了上面的任何内容吗?我该怎么做? 谢谢你的知识!
答案 0 :(得分:2)
你必须改变位置:相对CSS你的李
#PartnerSchedule ul#PartnerEvents li {
position:relative;
width:457px;
height:41px;
margin:0 0 2px 0;
padding:0 10px;
font:.9em/1.75em "Helvetica Neue", Arial, Helvetica, Genevea, sans-serif;
overflow: hidden;
}
此脚本是您的解决方案,您可以添加控件以在达到限制时停止滚动。
$('#up').click(function(){
$('#PartnerEvents li').animate({top:'-=43'});
});
$('#down').click(function(){
$('#PartnerEvents li').animate({top:'+=43'});
});
答案 1 :(得分:1)
<!-- language: lang-js -->
var itemsToShow = 4;
$('#PartnerEvents>li').each(function(i,k) {
var ele = $(this);
$(ele).attr('id', 'PartnerEvents' + i);
if (i >= itemsToShow) //i is zero indexed
{
$(ele).hide();
}
});
$('#up').bind('click', function() {
if ($('#PartnerEvents0:hidden').length > 0)
{
// This means we can go up
var boundaryTop = $('#PartnerEvents li:visible:first').attr('id');
var boundaryBottom = $('#PartnerEvents li:visible:last').attr('id');
if ($('#PartnerEvents li#'+ boundaryTop).prev().length > 0)
{
$('#PartnerEvents li#'+ boundaryTop).prev().show();
$('#PartnerEvents li#'+ boundaryBottom).hide();
}
}
});
$('#down').bind('click', function() {
if ($('#PartnerEvents li:last:hidden').length > 0)
{
// This means we can go down
var boundaryTop = $('#PartnerEvents li:visible:first').attr('id');
var boundaryBottom = $('#PartnerEvents li:visible:last').attr('id');
if ($('#PartnerEvents li#'+ boundaryBottom).next().length > 0)
{
$('#PartnerEvents li#'+ boundaryBottom).next().show();
$('#PartnerEvents li#'+ boundaryTop).hide();
}
}
});