我想在ajax调用中重新绑定(bind)窗口滚动事件
$(window).scroll(function(){
column_height = $("#first_column").height();
screenTop = $(window).scrollTop();
window_height = $(window).height();
if((screenTop+window_height)>=column_height){
$(window).unbind('scroll');
$.ajax({
url: "/service/article_json.php",
type: 'GET',
async: false,
cache: false,
timeout: 30000,
error: function(){
return true;
},
success: function(data){
$.each($.parseJSON(data), function(key,item) {
//Add content to #first_column
$(window).bind('scroll');
});
}
});
}
});
$(window).bind('scroll');
似乎不起作用。
最佳答案
当您.unbind
时,对绑定(bind)事件的引用不会存储在任何地方或任何内容。 $(window).bind('scroll')
实际上什么也没做。
首先,如果您使用的是 1.7
,则应该使用 .on
和 .off
。没什么大不了的。
有多种方法可以做到这一点,但最简单的方法是单独定义函数并使用其名称来绑定(bind)/取消绑定(bind)。您甚至可以将其附加到窗口(尽管我认为仅使用 function
关键字就可以做到这一点。无论如何..)
$(window).data('scrollEvent', function() { /* your func here */ });
$(window).on('scroll', $(window).data('scrollEvent'));
您可以使用第二行替换上面的 $(window).bind('scroll')
。当心递归。
关于javascript - 无法重新绑定(bind)滚动事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11122010/