【问题标题】:How to execute a function AFTER Event.observe(n,"click",respondClick)如何在 Event.observe(and,"click",respond Click) 之后执行一个函数
【发布时间】:2012-01-13 03:13:55
【问题描述】:

我的函数Event.observe(n,"click",respondClick)执行respondClickON点击。

但是我需要执行respondclickAFTER点击

我需要获得我的 div AFTER 我点击的高度。但是这个函数会瞬间得到我的 div 的高度。

有可能吗?

Event.observe(n, 'click', function(e){
  var height = $("hello").getHeight();
  alert(height);
});

【问题讨论】:

    标签: javascript events function prototypejs


    【解决方案1】:

    我不确定我理解你所说的after 是什么意思。你可以使用mouseup 事件,它在用户释放鼠标按钮时触发?

    您可以setTimeout,并在用户单击后不久运行该功能。如果responseClick 更改 UI,这会使页面感觉迟缓。

    【讨论】:

    • @Steffi 我想不出一种直接的方法来做到这一点,但正如您选择的标签所暗示的那样,可以使用一些聪明的方法在“点击”事件之后挂钩执行代码。但是,如果可能的话,挂钩到任何改变div 尺寸的函数(并在该函数之后执行respondClick)会比从两个地方挂钩到同一个事件更容易。
    • @Steffi 对此要非常小心。你有一些竞争条件 - 你不知道 setTimeout 延迟足够长,以执行更改 div 大小的函数。
    • 如果您打算使用这种方法,那么Function#delay 是一种更具原型性的方法。
    【解决方案2】:

    您的“点击后”没有任何意义,除非点击也在执行其他操作,在这种情况下,答案将取决于“其他操作”是什么以及您如何操作。

    但是 Function#defer() 可能会做你想做的事。

    【讨论】:

    • 感谢defer(),我不知道。
    猜你喜欢
    • 2018-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-08
    • 1970-01-01
    • 2015-12-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多