如何不在侧面导航和顶部导航栏中定位定位标记

时间:2019-03-13 21:23:12

标签: javascript jquery html

我有一个弹出窗口,每当出现外部链接时都会出现。如果不是外部链接,则该链接应在新选项卡中打开。我遇到的问题是这种方法的目标是导航栏中的定位标记,并在新标签页中打开页面。仅在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> 

我的问题是:如何在单击功能中不包括侧面导航栏和顶部导航栏?

2 个答案:

答案 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
}