jQuery fade使页面滚动到顶部/跳转

时间:2013-03-16 19:37:41

标签: javascript jquery html css html5

本周jQuery正在摧毁我。我在我的投资组合网站(http://www.codeisdna.com)上通过jQuery使用fadeIn,一旦点击它就会打开一个部分。这是我正在使用的HTML代码:

<div class="project first project_name">
    <div class="title">
        Project Title!
        <div class="date">2012</div>
    </div>
    <a class="expand" title="Click to expand the project." href="#project_1">Project Title!</a>
</div>

这会打开一个标签:

<div id="project_1" class="project_full pname"></div>

使用此js:

    $(document).ready(function(){
        $(".project").click(function() {
            $("a.expand").removeClass("hovered");
            $(this).find("a.expand").addClass("hovered");
            $(".project_full").hide();
            var selected_tab = $(this).find("a").attr("href");
            $(selected_tab).fadeIn();
            return false;
        });
    });

编辑:这是.project_full的CSS代码(扩展选项卡 - .project的CSS代码无关紧要):

.project_full {
    display: none;
    margin-top: 20px;
    width: 100%;
    max-height: 450px;
    padding: 20px 0px;
    text-align: center;
    background: url(../img/code.jpg) top center no-repeat fixed #293134;
    box-shadow: inset 0 0 10px rgba(0,0,0,0.5);
    color: #fff;
    overflow: hidden;}
.project_full .wrapper {position: relative;}

我已经尝试为父div分配一个固定的高度,e.PreventDefault()不起作用(我使用的是基于锚的标签,所以没有那种方法可以工作),依此类推。第一次单击时页面会跳转,每次连续单击都会跳转。我知道,一旦div被取消隐藏并“重新隐藏”,它会因缺少内容而跳转。

我想知道HTML5数据属性是否可以解决这个问题?但话又说回来,为什么它仍然存在,尽管它是空白的(#)。

希望有更多JS经验的人可以帮助我!

1 个答案:

答案 0 :(得分:1)

更改处理程序添加preventDefault

    $(".project").click(function(e) {
        e.preventDefault();
        $("a.expand").removeClass("hovered");
        $(this).find("a.expand").addClass("hovered");
        $(".project_full").hide();
        var selected_tab = $(this).find("a").attr("href");
        $(selected_tab).fadeIn();
        return false;
    });

或者将您的a代码href属性更改为&#39; javascript:&#39;

或者用span span替换标签,让点击处理程序保持不变。

或者在标签(<a name='project_1'></a>)的正确位置添加名称属性,因为它正在滚动到此标记或页面的开头,因为没有相应名称的副本