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);
}
答
如果需要加载外部JS脚本和执行代码AFER它,你可以使用$.getScript()并将代码放在回调中:
$.getScript("scrollsaver.js", function(){
//code to execute after the script has loaded here
});
即时我运行之前scrollsaver.js做它的事情。另外,我不清楚.ready(innerFunction())和outerFunction(.ready(innerFunction()))之间的区别。我只在需要时才使用outerFunction来调用重置。 –
jQuery中的[ready()函数实际上是一个事件](http://api.jquery.com/ready/) - 它触发DOM已加载的事件 - 您不能将它放入函数中并将其称为你的方式.....如果你的脚本运行得太早,你需要附加到其他脚本触发?如果有的话?或者调用init的另一个脚本的方法,然后调用这个方法...如果你在你的问题中包含一些更多的细节,它可能会有所帮助 - 即你如何调用其他函数 – ManseUK
也许有一个回调可用于在scrollsaver中onload,你可以使用。或者你总是可以写一个。 – Matthew