javascript - 无法重新绑定(bind)滚动事件?

标签 javascript jquery events bind dynamic-rebinding

我想在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/

相关文章:

javascript - For 循环返回 undefined variable

JavaScript:如何将附加信息传递到源页面?

c - c中的事件驱动设计

events - Magento 添加新产品事件观察者

jquery - 使用 jquery ui-sortable 排序时出现奇怪的绿色/黄色背景

javascript - 检查任何 DOM 元素的附加事件处理程序

javascript - knockout validation 并显示工具提示

javascript - 如何从 firebase 中的函数检索数据

javascript - Rails 4 中为一种表单传递了错误的图像 url,并从部分更正为另一种表单

jquery - 滚动效果淡入淡出