【问题标题】:jQuery event to detect when element position changesjQuery事件来检测元素位置何时改变
【发布时间】:2008-12-10 03:32:52
【问题描述】:

我想知道是否有一个 jQuery 事件可用于确定特定 DIV 的 top 属性何时发生变化。

例如,我在 DIV 上方有不可见的内容。当该内容变得可见时,DIV 将向下移动。我想捕获该事件,然后使用offset() 函数获取 X/Y 坐标。

【问题讨论】:

  • 你找到解决办法了吗?
  • @Sam Dutton - 不。我的解决方案是重新考虑一些页面布局和结构。事情变得太复杂了。

标签: javascript jquery events javascript-events


【解决方案1】:

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

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

  1. 民意调查,讨厌,但它可能会根据您的更新频率要求工作。

  2. 利用导致不可见 DIV 改变大小的任何事件,并在该处理程序中执行您需要执行的任何操作


我会改正自己的。

我查看了 DOM 并注意到了 DOMAttrModified 事件并发现了这个 JQuery Plug-In,您可以利用它来做您想做的事情。

正如文章所述,它在 IE 和 Firefox 中运行良好,但在 WebKit 中似乎存在问题。

【讨论】:

  • 我认为链接到的插件不适用于 OP 的情况。据我了解,DOMAttrModified 事件仅在脚本更改属性时触发,而不是在 OP 所指的更改之后触发。但是,propertychange 事件(我认为)在这两种情况下都会触发:help.dottoro.com/ljdchxcl.php
  • 请注意,Rick 的解决方案也使用轮询,这意味着您基本上需要在看起来平滑的东西和不会不必要地消耗 CPU 之间进行权衡。
【解决方案2】:

我认为你应该能够做到:

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

【讨论】:

  • 换个思路,这对于相对定位的元素来说可能是不可能的
  • 这些movestart 和moveend 事件是什么? plugins.jquery.com/event.move ?在这种情况下,这些事件似乎与触摸和鼠标移动有关,不一定是任意元素位置变化。
【解决方案3】:
$("#someId").resize(function () {

// your code

});

【讨论】:

  • 这没有任何作用。
猜你喜欢
  • 1970-01-01
  • 2011-06-24
  • 2013-09-15
  • 2011-11-26
  • 1970-01-01
  • 2021-07-20
  • 1970-01-01
  • 2013-06-02
  • 1970-01-01
相关资源
最近更新 更多