Javascript 如何在函数运行期间暂停所有jQuery函数和DOM加载?
我正在使用jQuery scrollTo()在我的站点上平滑滚动。除了在初始加载期间,其他情况下工作良好。当页面上的图像被加载时,它会使平滑的滚动条变得不那么平滑,而且非常滞后。更糟糕的是,我还预加载了站点其余部分的所有其他图像,因此加载所有内容需要更长的时间(尽管是隐藏的) 所以问题是,您能否在scrollTo()期间停止所有处理,暂停所有加载,平滑滚动页面,然后返回加载 我用于scrollTo的jQuery:Javascript 如何在函数运行期间暂停所有jQuery函数和DOM加载?,javascript,jquery,dom,Javascript,Jquery,Dom,我正在使用jQuery scrollTo()在我的站点上平滑滚动。除了在初始加载期间,其他情况下工作良好。当页面上的图像被加载时,它会使平滑的滚动条变得不那么平滑,而且非常滞后。更糟糕的是,我还预加载了站点其余部分的所有其他图像,因此加载所有内容需要更长的时间(尽管是隐藏的) 所以问题是,您能否在scrollTo()期间停止所有处理,暂停所有加载,平滑滚动页面,然后返回加载 我用于scrollTo的jQuery: $('.smooth-scroll').click(function(e){
$('.smooth-scroll').click(function(e){
var dest = $(this).attr("href");
e.preventDefault();
$('html, body').animate({
scrollTop: $(dest).offset().top -60
}, 1000);
});
对于图像预加载:
image1 = new Image()
image1.src = "images/image.jpg"
如果可以暂停所有这些,我需要在这里添加什么?您可以防止像这样加载图像:
var unloaded = [];
$('img.noload').each(function (image) {
unloaded.push(image);
image._src = image.src;
image.src = 'loader.gif'; // Use an loading image to prevent "ALT" attribute effect
});
滚动完成后(回调函数),调用real SRC并将其应用于不同的图像:
unloaded.each(function (image) {
image.src = image._src;
});
请确保仅禁用内容图像(文本插图),因为此解决方案会阻止加载设计图像。您可以像这样阻止加载图像:
var unloaded = [];
$('img.noload').each(function (image) {
unloaded.push(image);
image._src = image.src;
image.src = 'loader.gif'; // Use an loading image to prevent "ALT" attribute effect
});
滚动完成后(回调函数),调用real SRC并将其应用于不同的图像:
unloaded.each(function (image) {
image.src = image._src;
});
请确保仅禁用内容图像(文本插图),因为此解决方案会阻止加载设计图像。您可以像这样阻止加载图像:
var unloaded = [];
$('img.noload').each(function (image) {
unloaded.push(image);
image._src = image.src;
image.src = 'loader.gif'; // Use an loading image to prevent "ALT" attribute effect
});
滚动完成后(回调函数),调用real SRC并将其应用于不同的图像:
unloaded.each(function (image) {
image.src = image._src;
});
请确保仅禁用内容图像(文本插图),因为此解决方案会阻止加载设计图像。您可以像这样阻止加载图像:
var unloaded = [];
$('img.noload').each(function (image) {
unloaded.push(image);
image._src = image.src;
image.src = 'loader.gif'; // Use an loading image to prevent "ALT" attribute effect
});
滚动完成后(回调函数),调用real SRC并将其应用于不同的图像:
unloaded.each(function (image) {
image.src = image._src;
});
请确保仅禁用内容图像(文本插图),因为此解决方案会阻止加载设计图像。您可以将所有jquery代码包装到$(窗口)。加载绑定将在加载所有内容后设置处理程序:
$(window).load(function(){
$('.smooth-scroll').click(function(e){
var dest = $(this).attr("href");
e.preventDefault();
$('html, body').animate({
scrollTop: $(dest).offset().top -60
}, 1000);
});
});
或者按照Thibault Bach的回答编写代码 您可以将所有jquery代码包装到$(窗口)。加载绑定,这将在加载所有内容后设置处理程序:
$(window).load(function(){
$('.smooth-scroll').click(function(e){
var dest = $(this).attr("href");
e.preventDefault();
$('html, body').animate({
scrollTop: $(dest).offset().top -60
}, 1000);
});
});
或者按照Thibault Bach的回答编写代码 您可以将所有jquery代码包装到$(窗口)。加载绑定,这将在加载所有内容后设置处理程序:
$(window).load(function(){
$('.smooth-scroll').click(function(e){
var dest = $(this).attr("href");
e.preventDefault();
$('html, body').animate({
scrollTop: $(dest).offset().top -60
}, 1000);
});
});
或者按照Thibault Bach的回答编写代码 您可以将所有jquery代码包装到$(窗口)。加载绑定,这将在加载所有内容后设置处理程序:
$(window).load(function(){
$('.smooth-scroll').click(function(e){
var dest = $(this).attr("href");
e.preventDefault();
$('html, body').animate({
scrollTop: $(dest).offset().top -60
}, 1000);
});
});
或者按照Thibault Bach的回答编写代码 使用CSS或HTML将宽度和高度设置为
使用CSS或HTML将宽度和高度设置为使用CSS或HTML将宽度和高度设置为使用CSS或HTML将宽度和高度设置为
正确,但如果您的图像太重而无法加载,您的滚动将稍后执行。正确,但是如果你的图像太重以至于无法加载,你的卷轴将稍后执行。对,但是如果你的图像太重以至于无法加载,你的卷轴将稍后执行。对,但是如果你的图像太重以至于无法加载,你的卷轴将稍后执行。正确,但是如果你使用响应式设计,你的宽度和高度可以是动态的。其次是很难设置所有图像尺寸,尤其是如果你的文本包含大量图像。你需要在其他样式表中以不同的宽度和高度添加这些类。如果在数据库(例如:博客网站)中插入并包含内容,你如何能在不手动编辑CSS的情况下更改这些内容?我认为这不是一个有用的解决方案,而且很难维护。没错,这个解决方案可能不适合所有情况。这是解决上述问题的方法之一。正确,但如果您使用响应性设计,您的宽度和高度可以是动态的。其次是很难设置所有图像尺寸,尤其是如果你的文本包含大量图像。你需要在其他样式表中以不同的宽度和高度添加这些类。如果在数据库(例如:博客网站)中插入并包含内容,你如何能在不手动编辑CSS的情况下更改这些内容?我认为这不是一个有用的解决方案,而且很难维护。没错,这个解决方案可能不适合所有情况。这是解决上述问题的方法之一。正确,但如果您使用响应性设计,您的宽度和高度可以是动态的。其次是很难设置所有图像尺寸,尤其是如果你的文本包含大量图像。你需要在其他样式表中以不同的宽度和高度添加这些类。如果在数据库(例如:博客网站)中插入并包含内容,你如何能在不手动编辑CSS的情况下更改这些内容?我认为这不是一个有用的解决方案,而且很难维护。没错,这个解决方案可能不适合所有情况。这是解决上述问题的方法之一。正确,但如果您使用响应性设计,您的宽度和高度可以是动态的。其次是很难设置所有图像尺寸,尤其是如果你的文本包含大量图像。你需要在其他样式表中以不同的宽度和高度添加这些类。如果在数据库(例如:博客网站)中插入并包含内容,你如何能在不手动编辑CSS的情况下更改这些内容?我认为这不是一个有用的解决方案,而且很难维护。没错,这个解决方案可能不适合所有情况。这是解决上述问题的方法之一。