哈希检查URL不断触发功能

时间:2018-06-27 11:35:06

标签: javascript jquery html

我具有以下功能。单击a-link时,它将更改URL并向其中添加一个哈希。然后,我运行检查以查看是否存在哈希。我会在文字后得到名字,并加载相关内容。

我的问题是changePage函数会不断触发。即使我添加了一个标志检查。见下文-

var changeCheck = true;

$(document).ready(function(){
    $('a.nav-link').on('click', function(e){
        e.preventDefault( );
        var pageRef = $(this).attr('href');

        window.history.pushState('changeUrl', 'Title', '/DigiOutsourceTask/#' + pageRef);
        changeCheck = true;

        changePage(pageRef)
        
    });

    if(window.location.hash && changeCheck === true){
        console.log('hash');
        changePage(window.location.hash.slice(1));
    }
            
});


function changePage(href){

    $( "#home-body" ).load(href, function(){
        console.log('changed');
    });
    changeCheck = false;
    console.log(href,'click');
}
<div id="home-body"></div>
                <ul class="main-menu-list">
                    <li>
                        <a class="nav-link" href="index.html">Home</a>
                    </li>
                    <li>
                        <a class="nav-link about" href="about.html">About</a>
                    </li>
                </ul>

1 个答案:

答案 0 :(得分:0)

请尝试删除if语句以及其中的所有内容,因为这对于脚本的功能是多余的。

在代码段的第11行,函数调用缺少分号来结束该行。