Javascript 用于在元素位置更改时检测的jQuery事件

Javascript 用于在元素位置更改时检测的jQuery事件,javascript,jquery,events,javascript-events,Javascript,Jquery,Events,Javascript Events,我想知道是否有一个jQuery事件,我可以用来确定某个特定DIV的top属性何时发生了更改 例如,我有一个DIV上面的不可见内容。当该内容变为可见时,DIV向下移动。我希望捕获该事件,然后使用offset()函数获取X/Y坐标。我认为您应该能够执行以下操作: $(document).ready( function (){ $("#mydiv").bind("movestart", function (){ ...remember start position... }); $("#myd

我想知道是否有一个jQuery事件,我可以用来确定某个特定DIV的
top
属性何时发生了更改


例如,我有一个DIV上面的不可见内容。当该内容变为可见时,DIV向下移动。我希望捕获该事件,然后使用
offset()
函数获取X/Y坐标。

我认为您应该能够执行以下操作:

$(document).ready( function (){
  $("#mydiv").bind("movestart", function (){ ...remember start position... });
  $("#mydiv").bind("moveend", function (){ ...calculate offsets etc... });
});

简单的答案是DOM中没有用于检测布局更新的事件

在我看来,你有几个选择:

  • 轮询,但它可能会根据您的更新频率要求工作

  • 点击任何导致不可见DIV改变大小的事件,并在该处理程序中执行任何需要执行的操作


  • 我会改正的

    我查看了DOM并注意到DOMAttrModified事件,发现您可以利用它来做您想做的事情


    正如文章所提到的,它在IE和Firefox中工作得很好,但在WebKit中似乎有问题。

    另一方面,对于相对定位的元素来说,这可能是不可能的。这些
    movestart
    moveend
    事件是什么?在这种情况下,这些事件似乎与触摸和鼠标移动有关,而不一定是任意元素位置的变化。我不认为链接到的插件将适用于OP的情况。据我所知,DOMAttrModified事件仅在脚本更改属性时触发,而不是在OP所指的更改之后触发。但是,propertychange事件(我认为)在这两种情况下都会触发:注意Rick的解决方案也使用轮询,这意味着你基本上要在看起来平滑和不必要地消耗CPU之间进行权衡。你有没有找到解决方案?@Sam Dutton-没有。我的解决方案是重新考虑一些页面布局和结构。事情变得太复杂了,这没用。
    $("#someId").resize(function () {
    
    // your code
    
    });