2017-09-13 76 views
2

嗨我想在我的页面中使用延迟加载。首先看它会显示第一个3格子。然后滚动后它会根据大小增加。 我尝试了一些点击行动加载更多。但我想添加滚动功能。下面我的代码jQuery如何使用延迟加载滚动加载更多内容

$(document).ready(function() { 
 
    size_li = $("#myList li").size(); 
 
    x=3; 
 
    $('#myList li:lt('+x+')').show(); 
 
    $('#loadMore').click(function() { 
 
     x= (x+5 <= size_li) ? x+5 : size_li; 
 
     $('#myList li:lt('+x+')').show(); 
 
    }); 
 
    $('#showLess').click(function() { 
 
     x=(x-5<0) ? 3 : x-5; 
 
     $('#myList li').not(':lt('+x+')').hide(); 
 
    }); 
 
});
#myList li{ display:none; 
 
} 
 
#loadMore { 
 
    color:green; 
 
    cursor:pointer; 
 
} 
 
#loadMore:hover { 
 
    color:black; 
 
} 
 
#showLess { 
 
    color:red; 
 
    cursor:pointer; 
 
} 
 
#showLess:hover { 
 
    color:black; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<ul id="myList"> 
 
    <li>One</li> 
 
    <li>Two</li> 
 
    <li>Three</li> 
 
    <li>Four</li> 
 
    <li>Five</li> 
 
    <li>Six</li> 
 
    <li>Seven</li> 
 
    <li>Eight</li> 
 
    <li>Nine</li> 
 
    <li>Ten</li> 
 
    <li>Eleven</li> 
 
    <li>Twelve</li> 
 
    <li>Thirteen</li> 
 
    <li>Fourteen</li> 
 
    <li>Fifteen</li> 
 
    <li>Sixteen</li> 
 
    <li>Seventeen</li> 
 
    <li>Eighteen</li> 
 
    <li>Nineteen</li> 
 
    <li>Twenty one</li> 
 
    <li>Twenty two</li> 
 
    <li>Twenty three</li> 
 
    <li>Twenty four</li> 
 
    <li>Twenty five</li> 
 
</ul> 
 
<div id="loadMore">Load more</div> 
 
<div id="showLess">Show less</div>

+0

你基本上要听scroll事件,检查多少是nelow折,然后加载您的内容: 'distanceToBottom = $(文件).height() - $ (window).height() - $(window).scrollTop();' – user2520818

+0

@ user2520818感谢您的评论。你能不能请我在jsfiddle中分享一个样品。 –

+0

你可以尝试一些第三方插件,库:jQuery.Lazy或jscroll – NguaCon

回答

2
使用jQuery滚动事件

编辑片断如下。 如果您需要实现任何不同,请告诉我们。

$(document).ready(function() { 
 
    size_li = $("#myList li").size(); 
 
    x=3; 
 
    $('#myList li:lt('+x+')').show(); 
 
    var heightVal = $('#myList').height(); 
 
    $('#myList').css('max-height', heightVal-1); 
 
    $('#myList').bind('mouseover',function(){ 
 
     $('#myList').css('overflow-y', 'auto'); 
 
    }); 
 
    $("#myList").scroll(function() { 
 
     x= (x+5 <= size_li) ? x+5 : size_li; 
 
     $('#myList li:lt('+x+')').show(); 
 
\t \t }); 
 
    /*$('#loadMore').click(function() { 
 
     
 
    }); 
 
    $('#showLess').click(function() { 
 
     x=(x-5<0) ? 3 : x-5; 
 
     $('#myList li').not(':lt('+x+')').hide(); 
 
    });*/ 
 
});
#myList { 
 
    /*max-height : 100px;*/ 
 
    overflow-y : hidden; 
 
} 
 

 
#myList li{ 
 
    display:none; 
 
} 
 
#loadMore { 
 
    color:green; 
 
    cursor:pointer; 
 
} 
 
#loadMore:hover { 
 
    color:black; 
 
} 
 
#showLess { 
 
    color:red; 
 
    cursor:pointer; 
 
} 
 
#showLess:hover { 
 
    color:black; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<ul id="myList"> 
 
    <li>One</li> 
 
    <li>Two</li> 
 
    <li>Three</li> 
 
    <li>Four</li> 
 
    <li>Five</li> 
 
    <li>Six</li> 
 
    <li>Seven</li> 
 
    <li>Eight</li> 
 
    <li>Nine</li> 
 
    <li>Ten</li> 
 
    <li>Eleven</li> 
 
    <li>Twelve</li> 
 
    <li>Thirteen</li> 
 
    <li>Fourteen</li> 
 
    <li>Fifteen</li> 
 
    <li>Sixteen</li> 
 
    <li>Seventeen</li> 
 
    <li>Eighteen</li> 
 
    <li>Nineteen</li> 
 
    <li>Twenty one</li> 
 
    <li>Twenty two</li> 
 
    <li>Twenty three</li> 
 
    <li>Twenty four</li> 
 
    <li>Twenty five</li> 
 
</ul> 
 
<div id="loadMore">Load more</div> 
 
<div id="showLess">Show less</div>

+0

感谢您的回答。这里看起来有点奇怪,当我在main div中使用溢出y时。 –

+0

@LemonKazi我编辑了上面的代码片段来显示mouseover事件的滚动条。请注意,我们正在尝试使用溢出来实现此目的 – Piyush

+0

这很好。我申请了我的申请。它在jsfiddle上工作,但不在我的实时页面上。你可以建议我为什么? –