单击链接后窗口没有立即加载

时间:2019-05-20 12:05:58

标签: javascript html

当我单击锚链接时,应立即再次加载当前页面:

<a href="javascript:void(0);" class="BackToFirst"  
 onclick="popNav('BackToFirst');">Back</a>

function popNav(type) {
    if(type == "BackToFirst") {
       $(".first").show();
       $(".second").hide();
       $('.BackToFirst').click(function() {
           document.location.href =  window.location.href;
       });
    }
}

我希望当用户单击链接时,当前页面将立即加载,但需要一些时间来加载。

3 个答案:

答案 0 :(得分:0)

您的点击处理程序仅向链接分配了一个新的点击处理程序,请尝试直接导航到该链接:

 function popNav(type){
    if(type=="BackToFirst")
     {
        $(".first").show();
        $(".second").hide();
        document.location.href =  window.location.href;
     }
  }

我认为您混淆了两个概念,以上代码将DOM事件直接附加到链接上,另一种方式是使用JQuery将事件附加到该按钮上,如下所示:

HTML:

<a href="javascript:void(0);" class="BackToFirst">Back</a>

脚本:

   $('.BackToFirst').click(function(){
       $(".first").show();
       $(".second").hide();
       document.location.href =  window.location.href;
   });

如果您仍然想检查类型,那么使用JQuery时,数据属性是一种不错的选择:

<a href="javascript:void(0);" class="BackToFirst" data-linktype="BackToFirst">Back</a>

   $('.BackToFirst').click(function(){
       if($(this).data('linktype') == 'BackToFirst'){
            $(".first").show();
            $(".second").hide();
            document.location.href =  window.location.href;
       }
   });

答案 1 :(得分:0)

我认为您使代码过于复杂。单击元素后,您将绑定onClick。我认为这样应该会更好。

HTML:

<a href="#" class="BackToFirst" onclick="onClickHandler('BackToFirst')">Back</a>

JS:

function onClickHandler(type){
    if(type !== 'BackToFirst') {
        return;
    }
    $(".first").show();
    $(".second").hide();
    location.reload();
}

答案 2 :(得分:0)

目前尚不清楚您要做什么。

    重新加载页面时,
  1. 显示/隐藏立即被撤消
  2. 建议使用location.reload(1)代替设置所谓的只读document.location
  3. 您可能想使用e.preventDefault代替javascript void
  4. 您完全确定这不是X / Y问题吗?您能解释一下实际用例吗?
var current = sessionStorage.getItem("which"); // does not run in a snippet
current = current ? current.split("|") : []
if (current.length) {
  $("." + current[0]).show();
  $("." + current[1]).hide();
}
$(".BackToFirst").on("click", function(e) {
  e.preventDefault();
  $(".first").show();
  $(".second").hide();
  sessionStorage.setItem("which", "first|second")
  setTimeout(function() {
    location.reload(1); // are you absolutely sure this is not an X/Y problem?
  }, 500); //let the show/hide sink in  
});
<a href="#" class="BackToFirst">Back</a>