如何在逻辑语句的结果发生变化时执行回调?

时间:2011-02-27 20:27:38

标签: javascript jquery logic conditional-statements

使用jquery可以在条件语句从false变为true时立即触发函数吗?

我正在寻找一种不消耗所有系统资源的解决方案(即:Not setInterval(function(){},1))。

最后我使用了.scroll()而不是下面更雄心勃勃的建议。

1 个答案:

答案 0 :(得分:4)

除非更改元素的高度,否则只需观察调整大小滚动事件。所以试试这个:

$(window).bind('resize', handler);
$(document).bind('scroll', handler);

由于这些事件可以经常触发,因此应该将处理程序操作保持在最低限度。例如,您可以使用closure缓存$来电:

var handler = (function(a, b){
    return function(event) {
        if ((a.scrollTop() + a.height()) == b.height()) {
            /* … */
        }
    })($('#lay3b_top'), $('#measuring_wrapper'));

这里,外部函数返回的内部函数内的变量ab分别绑定到$('#lay3b_top')$('#measuring_wrapper')的返回值。 (function(){})()是一个匿名函数表达式,使用给定的参数立即调用,以将参数绑定到函数的作用域。