我有一个弹出窗口,每当出现外部链接时都会出现。如果不是外部链接,则该链接应在新选项卡中打开。我遇到的问题是这种方法的目标是导航栏中的定位标记,并在新标签页中打开页面。仅在pdf文档等情况下会发生这种情况。
以下是我的逻辑,它检测它是否是外部链接。我很难忽略导航栏和侧面导航栏中的链接。
$( document ).ready(function() {
$("a:not('.frontEndToolsModal')").on('click', function(e){
e.preventDefault();
var url = $(this).attr('href'),
host = location.host;
if (url.indexOf(host) > -1 || url.indexOf('http','https') == -1){
/* If we find the host name within the URL,
OR if we do not find http or https,
meaning it is a relative internal link.
The following statements is to not interefere with Mura CMS front end tools
*/
if(url.indexOf('/admin/?muraAction=cArch.list') == 0){
var newTab = window.open(url, '_blank');
newTab.focus();
}
else if(url.indexOf('/admin/?muraAction') == 0){
//do nothing
}else{
var newTab2 = window.open(url, '_blank');
newTab2.focus();
}
}
对于导航栏,它们具有以下结构:
<ul id="navPrimary" class="nav navbar-nav nav-nowrap">
<li class="first" id="navAboutUs"><a href="#">About Us</a></li>
</ul>
,对于侧面导航栏,它具有以下html:
<nav id="navStandard" class="mura-nav-standard well">
<ul class="nav nav-list">
<li class="first"><a href="#">Medical Services Authorization Status Tracker</a></li>
我的问题是:如何在单击功能中不包括侧面导航栏和顶部导航栏?
答案 0 :(得分:0)
我能够通过使用attr()并检查定位标记是否包含“ target ='_ blank'”来弄清楚。
所以我做了以下事情:
if($(this).attr("target") != '_blank'){
window.location.href = url;
}
else{
var newTab1 = window.open(url, '_blank');
newTab1.focus();
}
答案 1 :(得分:0)
此代码:
for i in price:
print i
...说的是:“单击任何确实具有类 strawberry, banana, apple
的{{1}}元素……都会发生。
这意味着您网站上除具有该类的链接之外的所有链接。对于您的点击功能,选择器可能太宽泛了。真正的解决方案是找出一个不同的选择器,该选择器适用于单击后您确实希望该功能运行的项目。这意味着可能会向想要触发该功能并相应地更新JS的项添加一些新类:
$("a:not('.frontEndToolsModal')").on('click', function(e){
// stuff happens
}