当我点击回到网站时,JS脚本不起作用

时间:2015-01-09 10:33:12

标签: javascript jquery

我在我的网站上创建导航。导航工作正常但当我回到主站点时,来自js文件的所有脚本都不起作用。导航脚本:

var default_content="";
$(document).ready(function(){
//Ajax navigate
checkURL();
$('footer a').click(function(){
        checkURL(this.hash);
});
default_content = $('#login_box').html();
setInterval("checkURL()",250);
.........

方法:

 var lasturl="";
    function checkURL(hash)
    {
        if(!hash) hash=window.location.hash;
        if(hash != lasturl)
        {
            lasturl=hash;
            if(hash=="")
            $('#login_box').html(default_content);
            else
            loadPage(hash);
        }
    }


function loadPage(url)
{
    url=url.replace('#page','');

    $.ajax({
        type: "POST",
        url: "include/help4meApi.php",
        data: 'page='+url+'&tag=navigation',
        dataType: "html",
        success: function(msg){

            if(parseInt(msg)!=0)
            {
                $('#login_box').html(msg);
            }
        }

    });

}

问题是当我回到主站点时脚本不起作用。

1 个答案:

答案 0 :(得分:0)

问题来自$('#login_box').html(default_content);。当你调用.html()时,元素中绑定的事件将被清除。

退格时,回到主页面,事件处理程序已经不存在了,所以你必须再次注册

//For show and hide register values
$("#registerInputsBtn").click(function(){
    $(".register_information").hide(1000);
    $(".register_values").show(1000);
    $("#firstname").focus();
});

再次注册您将内容分配给#login_box的代码段。例如快速修复:

if(hash==""){
        $('#login_box').html(default_content);
        $("#registerInputsBtn").click(function(){
            $(".register_information").hide(1000);
            $(".register_values").show(1000);
            $("#firstname").focus();
        });
    }

但这里的代码不是DRY :(重新安排页面加载的流程以及建议在正确的流程中注册事件。