0

我正在寻找一个听众来调整身体大小。我需要与身体类似的东西$(window).resize()

为什么我的身体需要它?我使用 ajax 添加内容,它可能会改变正文大小(取决于用户的分辨率)。

我怎样才能让身体调整大小的听众/我在哪里可以找到一个?

编辑:
除了 ajax,我有手风琴。
每个项目都有不同的高度,因此会导致身体调整大小......

谢谢。

4

2 回答 2

2

没有可靠的方法来收听身体调整大小,但是您可以收听手风琴中发生的动画。有两种方法可以做到这一点,但其中一种更酷。

在您的手风琴脚本的某个地方,您有一个 jQuery.animate语句。如果您不使用并且正在使用类似.show(200)or的快捷方式.fadeIn,则需要将其转换为.animate语句。.animate无论如何,所有这些命令实际上只是快捷方式。如果您正在使用slideUpslideDown。初始化滑块以供以后使用时,您必须保存元素的高度(顺便说一句,这是 jQuery 在幕后所做的)。

接下来,您将要使用 .animate 的 step 属性来监听滚动条的存在:

  $(accordionSlideToShow).animate({
        height : 200
        step : function(){
            //scrollbar checking and css control script here
        }
  }, 2000);

但是如果你想要更酷,你可以在你的小部件中添加自定义事件。通过这种方式,未来的开发可以作为免费功能与这些事件联系起来。

  $(accordionSlideToShow).trigger('ron-accordion-slideWillShow').animate({
        height : 200
        step : function(){
             $(accordionParentElement).trigger('ron-accordion-animationOccurring');
        }
  }, 2000, function(){
      $(this).trigger('ron-accordion-slideDidShow');
  });

现在您可以绑定到您的小部件的新事件模型并监听动画和滚动条,如下所示:

  $(accordionInstance).on('ron-accordion-animationOccurring', function(){
       //test for scroll bars and add css if needed
  });
于 2012-11-04T15:17:11.793 回答
0

当 body 元素改变大小时不会触发这样resize的事件 - 您可以分配一个resize事件处理程序,但这只会在窗口调整大小时触发。有几种方法可以逼近元素调整大小事件,但正如 Fresheyeball 所说,尝试从不同的角度解决问题可能会更好。话虽如此,您可以:

  1. 创建一个经常调用的函数,该函数setInterval将密切关注主体的width/heightscrollWitdth/ scrollHeight,并在发生变化时触发一个方法。

  2. 在支持此功能的浏览器中,您可以查看使用DOMAttrModified事件或可能使用MutationObserver. 但话又说回来,这些只得到一小部分用户代理的支持。

于 2012-11-03T16:50:04.037 回答