如果#hash在url中,则将Class添加到body

时间:2018-05-21 09:20:33

标签: jquery hash modal-dialog

我有以下代码,如果网址中有#hash,则会向主体添加一个类 - 但只有在我重新加载浏览器时它才有效。

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>

<script>
    $(document).ready(function() {

        if (window.location.href.indexOf('#login') != -1) {
            $(document.body).addClass('modalOpen');
        }

    });
</script>

不确定我做错了什么?当有人到达homepage.com#login

时,我希望它添加课程

提前致谢! 安迪

2 个答案:

答案 0 :(得分:1)

只使用$('body').addClass('modalOpen');而不使用$(document.body).addClass('modalOpen');因为body是一个标记,而不是.body中定义的类。

更改代码

$(document).ready(function() {

    if (window.location.href.indexOf('#login') != -1) {
        $('body').addClass('modalOpen');
    }

});

答案 1 :(得分:1)

问题是您的代码在加载document时运行,如果用户到达#login,则document将不会再次加载。解决方案是单独定义function

function hashChange() {
    if (window.location.href.indexOf('#login') != -1) {
        $(document.body).addClass('modalOpen');
    }
}

并在onhashchange事件中调用它:

window.onhashchange = function() {
    hashChange();
};

您也可以在加载页面时调用它。