事件调用Javascript函数当innerHTML已完成100%时

时间:2011-11-23 12:08:14

标签: javascript jquery javascript-events

我在标题上做了一个快速的谷歌,并对所有这些我不理解的代码进行了抨击。

我已经进行了几年的JavaScript编程,并且对大多数概念感到满意。事件处理除外。这吓到我了!

问题

我有一个div,我编写了一个脚本,它根据鼠标位置垂直滚动div。

我得到容器的高度,以及“溢出”的内部容器的高度。

将它们除以得到一个“差分”,然后用这个差值多次移动鼠标位置,让div根据鼠标位置滚动。

它给了我一个漂亮干净的卷轴!

(如果有人想要更多关于这方面的信息请问)

我的问题是。该div的内容由ajax生成。

因此,当计算内部和外部div的高度的代码运行时,它会给出不正确的高度,因为它们已经被数据填充了。

所以我需要触发一个函数当ajax将数据复制到innerHTML以调用mousescroll函数时。

额外

问题:我有两个填充可滚动div的ajax调用。有时一个在另一个之前被取出,反之亦然。所以我需要mousescroll函数来触发WHEN,并且只有当两个ajax调用都将所有数据完全输入到他们可以使用的html中时!

我在想添加一个setTimeout但是...我不喜欢强迫我的脚本等待!

2 个答案:

答案 0 :(得分:1)

我不是100%清楚问题出在哪里。你写道:“当ajax将数据复制到innerHTML以调用mousescroll函数时,我需要触发一个函数。” - 你需要帮助吗?如果您正在使用jQuery,那么您只需在success的{​​{1}}回调函数内调用mousescroll函数。

然而,正如您所指出的那样,您提出的另一个问题很复杂:实际上有两个Ajax调用,并且您希望在调用mousescroll函数之前完成两个。要解决此问题,只需创建一个等于零的变量,然后在$.ajax个回调中递增它。那些回调也会检查变量的值,如果它等于1(意味着Ajax调用已经完成),则调用mousescroll函数。

伪代码:

success

答案 1 :(得分:1)

根据您的描述,您需要在jQuery成功事件中处理ajax,然后在两个ajax事件完成后处理代码中的实际“完成”事件,并根据您的要求正确处理。