2012-10-10 41 views
2

我想绑定/解除绑定事件监听器窗口调整我使用.on()/。off()函数来做到这一点。因为.off()需要传递和.on()中相同的函数。我创建了一个在两个地方传递的独立函数。为什么在窗口调整大小时不会触发非匿名函数?

这里是(不工作)的代码:

var i = 0; 
function onResizeListener(){ 
    $('#debug').html(i); 
    i++; 
} 
$(document).ready(function() { 
    $(window).on('resize',onResizeListener()); 
}); 

实施例:http://jsfiddle.net/eRupC/2/

这一个是工作:http://jsfiddle.net/eRupC/1/当我的匿名函数包住onResizeListener()

该示例中的理想结果:调整窗口大小时,数字已更改。

在此先感谢。

回答

2

如果您需要将某物传递给onResizeListener,请尝试此操作。如果没有,请从其他答案中删除onResizeListener的括号。 Bind Documentation

$(document).ready(function() { 
    var x = 2; 
    var y = 4; 
    $(window).bind('resize', function() { 
    onResizeListener(x, y); 
    }); 
}); 

这也将工作:

$(document).ready(function() { 
    $(window).on('resize', function() { 
    onResizeListener(); 
    }); 
}); 

unbind从resize事件函数调用,但仍然传递参数的功能,你可以使用:

$(document).ready(function() { 
    //bind 
    $(window).bind('resize', { foo: 'bar' },onResizeListener); 

    //unbind, wrap in event you wish to use to unbind it 
    $(window).unbind('click', onResizeListener); 
}); 
+0

如何通过这些参数传递到onResizeListener功能? –

+0

就像你通常会使用一个函数一样。在我的答案中查看我的第一个例子。 –

+0

那么如何解除匿名函数? :) –

0

您需要从事件处理程序代码中删除括号...

var i = 0; 
function onResizeListener(){ 
    $('#debug').html(i); 
    i++; 
} 
$(document).ready(function() { 
    $(window).on('resize',onResizeListener); 
}); 
相关问题