Javascript - 在另一个函数加载后运行函数*?

Javascript - 在另一个函数加载后运行函数*?

问题描述:

我使用scrollsaver.js(http://en.hasheminezhad.com/scrollsaver)在回发时保持元素的滚动位置。有些情况下,我希望重置滚动位置,但我很难这样做。Javascript - 在另一个函数加载后运行函数*?

通过列表分页,我希望滚动到每个页面上的更改。我通过在分页处理程序中注册一个调用resetGridScroll(下面)来完成此操作。

scrollsaver.js绑定到页面加载事件。当我这样做时,我的函数在scrollsaver.js加载位置之前运行。有没有办法强制我的网页加载后运行?

function resetGridScroll() { 
    $(document).ready(function() { 
     $("div.items").animate({ scrollTop: 0, easing: 'swing', queue: false }, 15000); 
    }); 
} 

编辑:我最终清除cookie的scrollsaver.js集来存储滚动位置。它在脚本加载之前被清除,所有位置都被重置。不优雅,但可行。

将调用该函数的resetGridScroll()内:

$(document).ready(function() { 
//here 
}); 

不是你的函数被调用,例如:

$(document).ready(function() { 
    resetGridScroll(); 
}); 


function resetGridScroll() { 
    $("div.items").scrollType(0); 
    $("div.items").animate({ scrollTop: 0, easing: 'swing', queue: false }, 15000); 
} 
+0

即时我运行之前scrollsaver.js做它的事情。另外,我不清楚.ready(innerFunction())和outerFunction(.ready(innerFunction()))之间的区别。我只在需要时才使用outerFunction来调用重置。 –

+0

jQuery中的[ready()函数实际上是一个事件](http://api.jquery.com/ready/) - 它触发DOM已加载的事件 - 您不能将它放入函数中并将其称为你的方式.....如果你的脚本运行得太早,你需要附加到其他脚本触发?如果有的话?或者调用init的另一个脚本的方法,然后调用这个方法...如果你在你的问题中包含一些更多的细节,它可能会有所帮助 - 即你如何调用其他函数 – ManseUK

+0

也许有一个回调可用于在scrollsaver中onload,你可以使用。或者你总是可以写一个。 – Matthew

如果需要加载外部JS脚本和执行代码AFER它,你可以使用$.getScript()并将代码放在回调中:

$.getScript("scrollsaver.js", function(){ 
    //code to execute after the script has loaded here 
});