我想绑定/取消绑定事件监听器到窗口调整大小我正在使用.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/
当我使用匿名函数包装onResizeListener()
时,这个正在工作:http://jsfiddle.net/eRupC/1/。
示例中的理想结果:当您调整窗口大小时,数字已更改。
提前致谢。
答案 0 :(得分: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();
});
});
来自resize事件的unbind函数调用,但仍将参数传递给您可以使用的函数:
$(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);
});
答案 1 :(得分:0)
您需要从事件处理程序代码中删除括号...
var i = 0;
function onResizeListener(){
$('#debug').html(i);
i++;
}
$(document).ready(function() {
$(window).on('resize',onResizeListener);
});
答案 2 :(得分:0)
替换此行
$(window).on('resize',onResizeListener());
用这个
$(window).on('resize',onResizeListener);