Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jquery比较href+;url和';包含';问题_Javascript_Jquery - Fatal编程技术网

Javascript jquery比较href+;url和';包含';问题

Javascript jquery比较href+;url和';包含';问题,javascript,jquery,Javascript,Jquery,我这里有一些jquery: $(document).ready(function () { $('a[href*="' + window.location.href + '"]').css('font-weight', 'bold'); //check that the text exists in the div and make top menu item bold $("ul#menu2 div:contains('About Us

我这里有一些jquery:

    $(document).ready(function () {
        $('a[href*="' + window.location.href + '"]').css('font-weight', 'bold');

        //check that the text exists in the div and make top menu item bold
        $("ul#menu2 div:contains('About Us')");
        {
            $("ul.sf-menu li a:contains('About Us')").css('font-weight', 'bold');
        }
   });
问题是在页面加载时,URL只有www.website.co.uk 代码将url与菜单中的href匹配,然后将其设置为粗体

当你点击一个菜单项时,它会很好,URL显示为www.website.co.uk/aboutus/abgroup.apx

jquery的第二部分检查其中一个页面左侧菜单中的一个单词,然后将样式添加到顶部菜单中,该菜单也与该字符串匹配。但它似乎使所有的顶级菜单项都变得粗体

任何想法

我需要类似的东西,在页面加载时,如果URL结尾包含.co.uk,则将主页
li设置为粗体

菜单标记:

<ul class="sf-menu">
    <li class="first"><a href="http://www.site.co.uk/en-us/home.aspx">Home</a></li>
    <li class=""><a href="http://www.site.co.uk/en-us/aboutus/abgroup.aspx">About Us</a></li>
    <li class=""><a href="http://www.site.co.uk/en-us/casestudies.aspx">Case Studies</a></li>
</ul>
这是一个由两部分组成的问题

1)当url仅为www.website.co.uk时,我需要停止jquery将所有内容加粗,因为它无法与href和url进行比较

2)需要知道为什么在某些页面上,包含的内容总是突出显示(这可能是因为我不够具体,我正在使用ID进行检查,但顶部菜单没有。)

这是我的“关于我们”菜单: (我也有服务和部门,同样的原则也适用——我想从菜单中搜索div,并将顶部对应的菜单项加粗

<ul id="menu2">
    <div>About Us<br>
    </div>
    <li><a href="/en-us/aboutus/ABgroup.aspx" class="current">A&amp;B Group</a></li>
    <li style="padding-left: 10px;"><a href="/en-us/aboutus/csr.aspx">CSR</a></li>
    <li style="padding-left: 10px;"><a href="/en-us/aboutus/csr/sustainability.aspx">Sustainability</a></li>
    <li style="padding-left: 10px;"><a href="/en-us/aboutus/csr/healthsafety.aspx">Health &amp; Safety</a></li>
    <li><a href="/aboutus/ab/aluminiumsheets.aspx">Aluminium Sheets</a></li>
    <li><a href="/aboutus/ab/test.aspx">Test</a></li>
    <li><a href="/aboutus/ab/cars.aspx">Cars</a></li>
    <li><a href="/aboutus/ab/houseinteriors.aspx">House Interiors </a></li>
    <li><a href="/aboutus/ab/abreports.aspx">A&amp;B reports</a></li>
</ul>
    关于我们
使用此插件

然后像这样使用:

var regexp_part = /\w+\.aspx$/.exec(window.location.href)[0];
if (regexp_part != null) {
    $('a:regex(href, ' + regexp_part[0] +'$)').css('font-weight', 'bold');
}
<h2>About Us</h2>
<ul> .... </ul>

解决第一部分非常简单

var pattern = new RegExp('http(s?):\/\/(?:[\w-]+\.)?testsite\.co\.uk(/?)$');
if(pattern.test(window.location.href)) {
    $('.first').css('font-weight', 'bold');
} else {
    $('a[href*="' + window.location.href + '"]').css('font-weight', 'bold');
}
作为
中的根元素是无效的。如果这是标题,我建议使用标题标记并将其放在
之前。类似以下内容:

var regexp_part = /\w+\.aspx$/.exec(window.location.href)[0];
if (regexp_part != null) {
    $('a:regex(href, ' + regexp_part[0] +'$)').css('font-weight', 'bold');
}
<h2>About Us</h2>
<ul> .... </ul>

你能提供一些你的菜单标记吗?谢谢。所以如果我加载,
www.website.co.uk
会发生什么?如果将href属性值更改为www.website.co.uk,它将在页面加载时加粗主页链接,它会停止所有加粗的操作,这很好,但它应该成为“主页”
li a
bold所以我需要检查根url,然后将其加粗…对此有什么想法吗?然后第1点将被修复。关于我们是页面左侧菜单中的标题。现在将菜单添加到问题中。哇,这很有效。我更改了它,所以它的
我唯一的问题是当用户单击指向案例研究页面的链接时,它不会触发e代码。我已经有了文档。准备好了…也许我需要1秒的延迟?案例研究url看起来是这样的:正则表达式将只匹配根url,类似于
http://www.website.co.uk
http://cs.website.co.uk
我们可以改变一些东西,让它发挥作用。