jquery - 调整元素大小会触发窗口的调整大小事件

标签 jquery jquery-ui jquery-ui-resizable

看起来,当调整 HTML 元素的大小时,窗口的调整大小事件也会被触发。

由于我想在调整元素大小时和调整窗口大小时执行不同的逻辑,是否有一种非黑客的方法来处理这个问题?

http://jsfiddle.net/CPUwW/1/

$(function(){
    $(window).on('resize', function(){        
          // This event gets fired when the #my_element div gets resized, event if
          // window doesn't get resized itself
          $('#text').text(++resizes);
    });

    $('#my_element').resizable();    
});

换句话说,问题是当我调整一个元素的大小时,它的所有父元素的调整大小事件都会被触发,即使它们的大小没有改变

最佳答案

根据其他信息,我认为这反射(reflect)了窗口的行为。

$(function () {
    var resizes = 0;

    $(window).on('resize', function () {
        $('#text').text(++resizes);
    });
    $('#my_element').resizable();

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

});

http://jsfiddle.net/djwave28/CPUwW/7/

编辑:替代和“更优雅”的解决方案

尽管上述解决方案工作完美,但我对必须在 resizing() 小部件之外进行管理感到不满意。但事实并非如此。深入挖掘后,可以在“创建”阶段停止传播。为了展示这个解决方案,我将其添加到上一个解决方案中。

$(function () {
    var resizes = 0;

    $(window).on('resize', function () {
        $('#text').text(++resizes);
    });
    $('#my_element').resizable({
        create: function (event, ui) {
            $(this).parent().on('resize', function (e) {
                e.stopPropagation();
            });
        }
    });
});

更新了 fiddle : http://jsfiddle.net/djwave28/CPUwW/9/

关于jquery - 调整元素大小会触发窗口的调整大小事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15902920/

相关文章:

jquery - 动态 UL 不拾取 css?还是我做错了CSS?

jquery-ui - 为什么单击拖动 handle 不会窃取文本焦点?

javascript - jQuery:如果未成功删除帮助程序,如何阻止其被删除

javascript - jQuery UI token

jquery resizing - 是否有机会获取 div 的大小是否调整为大于或小于当前大小

javascript - 不改变 "left"属性的可调整大小的 div

javascript - 如何以不同的方式声明 JavaScript 变量

Jquery 滑动切换不起作用

javascript - 单击并使用 jquery 选择图像的垂直切片

javascript - 为第一项元素添加事件类