因此,每当用户滚动页面以加载更多帖子时,都会触发。
使用
$("#next-paginav")[0].click();
因为它是一个锚点'点击'。
$(document).ready(function() {
$(document).scroll(function (e) {
var intBottomMargin = 300;
if ($(window).scrollTop() >= $('main-content').height() - $(window).height() - intBottomMargin) {
setTimeout(function(){ $("#next-paginav")[0].click(); }, 800);
}
});
});
Dipesh的代码,我无法开始工作。
$(document).ready(function() {
$(document).scroll(function (e) {
var intBottomMargin = 300;
if ($(window).scrollTop() >= $('main-content').height() - $(window).height() - intBottomMargin) {
setTimeout(function(){
$("#next-paginav")[0].one('click',function() { });
}, 800);
}
});
});
问题在于它发射得如此之快,它会在发布之前发射两次,三次,四次。 这会导致各种各样的问题,除了它在实时服务器上发出如此多的请求之外,有时会跳过帖子。 有没有办法只开一次?
答案 0 :(得分:1)
您可以使用.one()
jQuery处理程序..
说明:将处理程序附加到元素的事件。每个元素最多执行一次处理程序。
<强> Official Document
强>
示例强>
$("#next-paginav")[0].one('click',function() { });
您也可以使用.off()
处理程序。
示例强>
$("#next-paginav")[0].click(function(){
$(this).off(event);
});
答案 1 :(得分:1)
$(document).ready(function() {
var timeout = '';
$(window).scroll(function (e) {
var intBottomMargin = 300;
clearTimeout(timeout);
if ($(window).scrollTop() >= $('main-content').height() - $(window).height() - intBottomMargin) {
timeout = setTimeout(function(){
$("#next-paginav")[0].click();
}, 800);
}
});
});
答案 2 :(得分:0)
试试这个
$("#next-paginav")[0].one('click',function (e) {
或者您可以尝试“直播”
$("#next-paginav")[0].live('click',function (e) {
根据“live”方法不推荐使用jquer1.7你可以使用“on”方法,如
$("#next-paginav")[0].on('click',function (e) {
答案 3 :(得分:0)
我的假设是,如果已经有计划加载,那么您不想再次触发加载。
您可以使用基于标志的解决方案
$(document).ready(function() {
var intBottomMargin = 300;
$(document).scroll(function(e) {
if (clickFlag) {
return;
}
clickFlag = true;
if ($(window).scrollTop() >= $('main-content').height()
- $(window).height() - intBottomMargin) {
setTimeout(function() {
$("#next-paginav")[0].click();
}, 800);
}
});
});
var clickFlag = false;
function myClickHandler() {
$.ajax({}).always(function() {
clickFlag = false;
})
}