首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jQuery .animate({scrollTop:. })

jQuery .animate({scrollTop:. })
EN

Stack Overflow用户
提问于 2013-07-05 10:20:08
回答 1查看 1.7K关注 0票数 0

我有一个.html文件

我有<ul>菜单,<li>有数据id属性。我有几个内容项,它们的id与菜单<li>data-id相同。默认情况下,大多数内容项都是display:none;首页内容display:block;

代码语言:javascript
复制
<ul>
    <li class="menuLink" id="onepage" data-id="one"></li>
    <li class="menuLink" id="twopage" data-id="two"></li>
    <li class="menuLink" id="threepage" data-id="three"></li>
    <li class="menuLink" id="fourpage" data-id="four"></li>
</ul>
<div class="content">
    <div id="one" class="page">...</div>
    <div id="two" class="page">...</div>
    <div id="three" class="page">...</div>
    <div id="four" class="page">...</div>
</div>

此脚本应通过单击菜单项显示并消失内容项。这个效果很好。

代码语言:javascript
复制
$('li.menuLink').click(function () {
    var elem = $(this);
    if (elem.hasClass('active')) {
    } else {
        $('li.active').removeClass('active');
        elem.addClass('active');
        $('#' + elem.attr('data-id')).prependTo($('.content'));
        var existing = $('.page:visible');
        (existing) ? existing.fadeOut(1) : '';
        $('#' + elem.attr('data-id')).delay(10).fadeIn(400);

        if (($('.body-wrapper').width()) <= 700) {
            $('html,body').animate({scrollTop: $('#' + elem.attr('data-id')).offset().top}, 500);
        }
    }
});

如果.body-wrapper宽度小于700 (移动设备),这个脚本也应该向下滚动到内容,但是这个功能根本不起作用。一旦刷新页面并单击第一个菜单元素,它就会工作一次。之后..。没什么。

代码语言:javascript
复制
if (($('.body-wrapper').width()) <= 700) {
            $('html,body').animate({scrollTop: $('#' + elem.attr('data-id')).offset().top}, 500);
        }

编辑: http://jsfiddle.net/wBUS7/2/

EN

回答 1

Stack Overflow用户

发布于 2013-07-05 10:44:53

您应该使用each()函数。喜欢

代码语言:javascript
复制
$('li.menuLink').each(function(){
    $(this).click(function () {
        var elem = $(this);
        if (elem.hasClass('active')) {
        } else {
            $('li.active').removeClass('active');
            elem.addClass('active');
            $('#' + elem.attr('data-id')).prependTo($('.content'));
            var existing = $('.page:visible');
            (existing) ? existing.fadeOut(1) : '';
            $('#' + elem.attr('data-id')).fadeIn(400);

            if (($('.body-wrapper').width()) <= 700) {
                $('html,body').animate({scrollTop: $('#' + elem.attr('data-id')).offset().top}, 500);
            }
        }
    });
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17486521

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档