您好,我正在使用ruby-2.2.2和rails 4进行ROR项目。我已经在网页中实现了到特定区域(div特定)的无限滚动,并且可以正常工作,但是每当进行水平滚动时通过增加表格的宽度或增加表格内的“ td”的数量将其分配给该div,它将在一次滚动中发送对同一页面的多个请求。
html page:
<div class="ibox-content" style="height: 450px;overflow-y: scroll;" id="user_mangmnet_scroll_div">
<table class="table table-hover">
<thead>
<tr>
<th>First Name</th>
<th>Last Name</th>
<th>Address</th>
<th>Zipcode</th>
<th>Phone Number</th>
<th>Email</th>
<th>User Type</th>
<th>Actions</th>
</tr>
</thead>
<tbody id="user_management_container">
<%= render 'dashboard/dashboards/admin/user_managment.html.erb' %>
</tbody>
</table>
</div>
<div id="user-pagination-container">
<%= will_paginate @user_registered %>
</div>
jQuery:
$(document).ready(function() {
if ($('#user-pagination-container .pagination').length) {
$('#user_mangmnet_scroll_div').scroll(function() {
var url = $('#user-pagination-container .pagination .next_page').attr('href');
if(url && ($(this).scrollTop() + $(this).innerHeight() >= $(this)[0].scrollHeight)) {
return $.getScript(url);
}
});
return $('#user_mangmnet_scroll_div').scroll();
}
});
问题是,每当我向div添加水平滚动时,它都会在单个滚动上发送同一页面的多个请求。
请提前帮助:)
答案 0 :(得分:0)
我认为您需要在此找到我为您找到的答案: Is there a vertical scroll event in jQuery
您检查滚动是否垂直,然后才调用操作。
复制-粘贴
var prevTop = 0;
$(document).scroll( function(evt) {
var currentTop = $(this).scrollTop();
if(prevTop !== currentTop) {
prevTop = currentTop;
console.log("I scrolled vertically.");
}
});
并使您的代码类似:
$(document).ready(function() {
var prevTop = 0;
var currentTop = 0;
if ($('#user-pagination-container .pagination').length) {
$('#user_mangmnet_scroll_div').scroll(function() {
currentTop = $(this).scrollTop();
if(prevTop !== currentTop) {
prevTop = currentTop
var url = $('#user-pagination-container .pagination .next_page').attr('href');
if(url && ($(this).scrollTop() + $(this).innerHeight() >= $(this)[0].scrollHeight)) {
return $.getScript(url);
}
} // end of checking if prevTop!==currentTop
});
return $('#user_mangmnet_scroll_div').scroll();
}
});
我没有检查它是否有效。我也不知道你为什么返回
$('#user_mangmnet_scroll_div').scroll(); in if statement...