【问题标题】:does the jquery trigger('resize') function works only once?jquery trigger('resize') 函数只工作一次吗?
【发布时间】:2016-08-19 17:16:36
【问题描述】:

我有这 2 段代码

function fixFooter() {
    var wrapper = $('#disqus_wrapper').height();
    if ( wrapper > 200 ) { 
        $(window).trigger('resize');
    }
};

var element = $('#disqus_wrapper');
new ResizeSensor(element, function() {
    fixFooter();
});

预期效果是每次 div#disqus_wrapper 改变高度时窗口都会调整大小。 (修复 cmets 和页脚重叠)

代码有效,但只有在页面加载后一次。每次 div 高度变化时,我都需要它来调整大小。我尝试使用警报切换触发器('resize')功能,一切正常。知道为什么触发器('resize')只能工作一次,我该如何解决?

更新;

html是这样的,因为我正在加载Disqus评论系统

<div id="disqus_wrapper"><div id="disqus_thread"></div></div>

为了检测 div 高度变化,我正在使用这个库 https://github.com/marcj/css-element-queries (ResizeSensor.js)

【问题讨论】:

  • 也向我们展示您的事件监听器。
  • @eisbehr ,我使用github.com/marcj/css-element-queries 来检测高度变化。检测工作正常,当我使用 alert() 时,它会在每次 div 改变高度时启动。但是当我使用 $(window).trigger('resize'); 时它只工作一次;
  • 请@Askaoru 发布您的 Html 和事件监听器
  • 然后您检查disqus_wrapper 元素的高度是否发生变化?
  • @BogdanKuštan 是的。

标签: javascript jquery


【解决方案1】:

您需要在窗口调整大小事件中调用您的函数fixFooter()

    $( window ).resize(function() {
       fixFooter();
    });

【讨论】:

  • 那不起作用:(它给了我Uncaught RangeError: Maximum call stack size exceeded
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-20
  • 2018-04-27
  • 1970-01-01
相关资源
最近更新 更多