如何延迟合并两个代码?

How to integreate two codes with delay?

我有这段代码可以用锚点动画我的页面

$('a[href*=#]').click(function(){
$('html, body').animate({
    scrollTop: $( $.attr(this, 'href') ).offset().top
}, 500);
return false;
});

而这个其他代码在 link 被预置时进行延迟

function delay (URL) {
    setTimeout( function() { window.location = URL }, 500 );
}

所以当我有一个 link 和 <a href="#demo">demo</a> 时,第一个代码运行完美但是当我像这样添加延迟时 <a onclick="delay ('#contentexpand-1')">demo</a> 第一个代码不起作用只是跳转到主播.

请帮帮我!提前致谢:)

问题是您的动画附加到 <a> 标签。当您简单地设置 window 位置时,不会触发它。解决方案是通过两种方式触发动画:

// Smoothly scroll to a tag defined by <a name="anchorName">
function scrollTo (anchorName) {
    $('html, body').animate( {
        scrollTop: $( "a[name=" + anchorName + "]" ).offset().top
    }, 500);
}

// Make all # anchors scroll smoothly to their targets
$(document).ready(function(){
    $('a[href*=#]').click(function() {
        var anchorName = $(this).attr('href').substr(1); // strip off #
        scrollTo(anchorName);
        return false;
    });
});

// Scroll to an anchor after half a second
function delay (anchorName) {
    setTimeout( function() { scrollTo(anchorName); }, 500 );
}

我不相信你找到偏移量的代码是正确的,所以我稍微调整了一下,让它更清楚。

您要滚动到的标签定义如下:

<a name="demo">demo</a>

那么您可以选择以下任一行为:

<a href="#demo">scroll smoothly to demo immediately</a>
<a onclick="delay ('demo')">scroll smoothly to demo after half second delay</a>