jQuery UI可resize的防火窗口resize事件

我有2个事件,一个用于检测窗口resize,另一个用于检测div的可resize的停止。

但是当我调整div的大小时,在控制台中检测窗口resize事件。

有没有办法阻止这个?

$(document).ready(function(){ $(window).bind('resize', function(){ console.log("resize"); }); $(".a").resizable(); }); 

示例: http : //jsfiddle.net/qwjDz/1/

所有这些答案都无济于事。 问题是调整事件气泡直到窗口。 所以最终e.target将成为窗口,即使resize发生在div上。 所以真正的答案是简单地停止传播resize事件:

 $("#mydiv").resizable().on('resize', function (e) { e.stopPropagation(); }); 

由于事件冒泡,您会看到此行为。 一种解决方法:使用event.target检查回调中的事件源:

 $(window).bind('resize', function(event) { if (!$(event.target).hasClass('ui-resizable')) { console.log("resize"); } }); 

演示: http : //jsfiddle.net/mattball/HEfM9/


另一种解决方案是向resizable添加resize处理程序并停止事件在DOM树上的传播(即“冒泡”)。编辑:这应该有用,但出于某种原因不行: http : //jsfiddle.net/mattball/5DtdY 。)

我认为最安全的做法是:

 $(window).bind('resize', function(event) { if (this == event.target) { console.log("resize"); } }); 

对我来说,使用JQuery 1.7.2,这里提出的解决方案都没有。 所以我不得不提出一个稍微不同的适用于较旧的IE浏览器以及Chrome …

 $(window).bind('resize', function(event) { if ($(event.target).prop("tagName") == "DIV") {return;} // tag causing event is a div (ie not the window) console.log("resize"); }); 

如果元素resize不是

则可能必须调整它

 $(window).resize(function(e) { if (e.target == window) /* do your stuff here */; }); 

http://bugs.jqueryui.com/ticket/7514