我可以检查是否设置了onresize方法吗?
我之前使用过:
$(window).resize(function() { /* ... */ });
由于另一个库中存在未知错误,因此不再调用onresize
。执行上面的行后,它再次完美地工作。该方法被调用一次。如果我再次在Firebug控制台中执行该行,则会调用该方法两次。
我想写一个解决方法,一旦“重置”就设置onresize
。
我正在寻找类似的东西:(未定义或 null)
if (window.onresize == undefined) { /* ... */ }
外部库/框架是Richfaces 4(扩展数据表)。一旦我对列进行排序,一些onresize函数处理程序就消失了。
之前:
$._data(window,'events').resize
// result on the Chrome console:
[Object, Object, Object, Object]
使用排序后:
$._data(window,'events').resize
// result on the Chrome console:
[Object]
我正在寻找一种编写解决方法的方法。
JIRA问题
答案 0 :(得分:2)
您可以使用$._data()
,这不是公开支持的方法:
$(window).on('load',function() {
if(!$._data(window,'events').resize)
alert('none resize bound');
});
在较旧的jquery版本中,它是:$.data()
答案 1 :(得分:1)
我在项目中使用的是
$(window).unbind('resize').bind('resize',function(){
//code here
});
它将删除resize事件的所有先前绑定(已注册)处理程序,并将此新函数注册为处理程序。 只有当您想要附加单个事件处理程序时,此方法才有用。
答案 2 :(得分:0)
感谢所有的答案和评论。正如所建议的那样,我找到了问题的根源并写了一个解决方法,包括解决问题。
window.RichFaces.ui.ExtendedDataTable.prototype.deActivateResizeListener = function() {
if (this.resizeEventName != undefined) {
$(window).off(this.resizeEventName);
}
};
我接受了解答,因为它确实有助于找到解决方法,如果有办法找出是否附加了事件处理程序,他的答案就回答了我的问题。