我对标题进行了快速的Google搜索,并把所有我不懂的代码都打了水漂。
我从事JavaScript编程已有两年了,对大多数概念都很满意。除了事件处理。吓到我了!
问题
我有一个div,我为此编写了一个脚本,该脚本完全基于鼠标位置垂直滚动div。
我得到了容器的高度,以及将“溢出”的内部容器的高度。
将它们除以得到一个“微分”,然后将鼠标位置乘以该微分,以使div根据鼠标位置滚动。
它给了我一个很好的干净滚动!
(如果有人想了解更多信息,请问)
我的问题是。该div的内容由ajax生成。
因此,当运行用于计算内部和外部div高度的代码时,它给出了不正确的高度,因为它们尚未被数据填充。
所以我需要在ajax将数据复制到innerHTML时触发一个函数来调用mousescroll函数。
额外
问题:我有两个可填充div的ajax调用。有时一个被抢先,反之亦然。因此,我需要mousescroll函数来触发WHEN,只有当两个Ajax调用已将所有数据完全输入到html中时,才可以触发它!
我本来只是想添加setTimeout,但...我不喜欢强迫我的脚本等待!
最佳答案
我不清楚问题出在哪里。您写道:“当ajax将数据复制到innerHTML以调用mousescroll函数时,我需要触发一个函数。” -您需要这部分的帮助吗?如果使用的是jQuery,则只需在success
的$.ajax
回调函数内部调用mousescroll函数。
但是,正如您所指出的那样,这会因您提出的另一个问题而变得复杂:实际上有两个Ajax调用,并且您希望它们在调用mousescroll函数之前都完成。要解决此问题,只需创建一个等于零的变量,然后在两个success
回调中将其递增。这些回调还将检查变量的值,如果该值等于1(表示Ajax调用已完成),则调用mousescroll函数。
伪代码:
var numOfAjaxCalls = 0;
$.ajax({
...
success: function(){
if(numOfAjaxCalls = 1){
mousescroll();
}else{
numOfAjaxCalls++;
}
}
});