Javascript 哈希锚链接无法找到/target ID DOM元素目标(在某些情况下)

Javascript 哈希锚链接无法找到/target ID DOM元素目标(在某些情况下),javascript,jquery,html,Javascript,Jquery,Html,哈希锚链接无法找到/target ID DOM元素目标(因此无法触发JS UI选项卡更改) 您好,请访问并向下滚动HTML全文(显示在此选项卡中),然后尝试单击标记为“增补1”或“增补2”的链接。注意:没有发生任何事情 这些链接没有什么聪明之处,它们是普通的html哈希链接 现在,如果您访问同一个页面,但这次使用浏览器地址栏中的以下URL进行硬重新加载(请注意,唯一的更改是URL中的哈希)。现在,请尝试按照与前面相同的说明进行操作,您会注意到,由于某种原因,锚定链接现在被遵循,锚定选项卡JS

哈希锚链接无法找到/target ID DOM元素目标(因此无法触发JS UI选项卡更改)

您好,请访问并向下滚动HTML全文(显示在此选项卡中),然后尝试单击标记为“增补1”或“增补2”的链接。注意:没有发生任何事情

这些链接没有什么聪明之处,它们是普通的html哈希链接


现在,如果您访问同一个页面,但这次使用浏览器地址栏中的以下URL进行硬重新加载(请注意,唯一的更改是URL中的哈希)。现在,请尝试按照与前面相同的说明进行操作,您会注意到,由于某种原因,锚定链接现在被遵循,锚定选项卡JS被触发,这是我所期望的行为


请告知。提前感谢。

您好,非常感谢通过重构responsive-tabs.js代码解决了此问题:

$(文档).ready(函数(){
//响应选项卡API代码。
变量选项卡={
init:function(){
this.bindui函数();
这个.pageLoadCorrectTab();
},
bindUIfunctions:function(){
//授权
$(文件)
.on(“单击“,”.js transformer选项卡a[href^='#']:非('.active、.disabled'))函数(事件){
Tabs.changeTab(this.hash);
event.preventDefault();
})
.on(“单击“,”.js transformer tabs a.active、.js transformer tabs a.disabled”,功能(事件){
Tabs.toggleMobileMenu(事件,此);
event.preventDefault();
})
.on(“单击“,”.js textoptions全文a.html:not(“.disabled”)”,函数(事件){
//log(“tab?”+this.hash);
event.preventBubble=true;
var anchorTab=Tabs.changeTab(this.hash);
trigger(“click”);//trigger click事件在本例中为html全文。
//event.preventDefault();
});
//我们还需要通过告诉浏览器触发选项卡行为来处理返回状态!
$(窗口).on('popstate',函数(e){
anchor=$('[href=“”+document.location.hash+'“]');
如果(锚定长度>0){
Tabs.displayTab(锚定);
}否则{
var defaultAnchor=$('.js transformer tabs li.active a');
如果(默认锚定){
Tabs.displayTab(默认锚定)
}
}
});
},
changeTab:函数(散列){
var anchor=$(“.js transformer tabs a[href='”+hash+“']”);
var-activeTab=anchor.find('span-strong');
Tabs.displayTab(锚定);
$(“.js下拉列表li”).hide();
$(“.js mobile tab”).text($(activeTab.text());
//更新历史堆栈并添加其他历史条目。
//支持pushState!
pushState(null,null,hash);
//关闭菜单,以防移动
return-anchor;//使属性在函数外部可用
},
pageLoadCorrectTab:函数(){
//log(“document.location.hash:+document.location.hash”);
if(document.location.hash.length>0){
//如果页面加载了哈希,请转到该选项卡
var anchor=$(“.js transformer tabs a[href=”+document.location.hash+“]”);
如果(!anchor.hasClass(“已禁用”)){
var anchorTab=this.changeTab(document.location.hash);
//这是进一步的修正案,允许全文和
//(任何未来事件,如果已附加)在为具有特定选项卡的页面添加书签时加载。
主播选项卡触发(“点击”);
}
}else if($(“.js transformer tabs.active.tabIcon.active”).length>0){
//转到JSP页面中定义为活动的ever选项卡,并触发对其的单击
//但是,只有在url中没有哈希时
var activeTab=$(“.js transformer tabs.active.tabIcon.active”);
activeTab.trigger(“click”);//触发器单击
}
},
切换MOBILEMENU:功能(事件,el){
$(el).最近的(“ul”).切换类别(“开放”);
},
显示选项卡:功能(anchortab){
var url=anchortab.attr(“href”);
//console.log(“url”+url);
var divtabContent=$(url);
//激活正确的锚(目视)
anchortab.addClass(“活动”).parent().Sides().find(“a”).removeClass(“活动”);
//激活正确的div(目测)
divtabContent.addClass(“活动”).sides().removeClass(“活动”);
}
}
现代化负荷([{
//试验
测试:现代化历史,
//如果是,则不执行任何操作,因为不需要加载任何额外内容。。。。
//如果没有,那么我们需要通过AJAX加载历史API
否:['/js/'+ingentaCMSApp.instanceprefix+'/vendor/history.min.js'],
完成:函数(){
变量位置=window.history.location | | window.location;
Tabs.init();
}
}])
});
//响应选项卡API代码结束。
$(“.js选择”)。单击(函数(){
$(“.js下拉列表li”).slideToggle();

});听起来像是页面检查了hash onload并做了一些事情。您应该在onload/ready/which中执行相同的操作。。。