Jquery 基于URL的高亮显示

Jquery 基于URL的高亮显示,jquery,url,tags,indexof,Jquery,Url,Tags,Indexof,因此,我试图根据与li中a标记的href匹配的URL向li添加一个类。我当前的代码是向每个li添加一个类,但我需要尝试让它只添加到包含匹配a标记的li。这有什么意义吗?任何帮助都将不胜感激 我的代码: <div id="admin-action-menu" class="links"> <div id="cat_settings" class="cat_menu row-fluid"> <ul role="menu" > <?

因此,我试图根据与li中a标记的href匹配的URL向li添加一个类。我当前的代码是向每个li添加一个类,但我需要尝试让它只添加到包含匹配a标记的li。这有什么意义吗?任何帮助都将不胜感激

我的代码:

<div id="admin-action-menu" class="links">
<div id="cat_settings" class="cat_menu row-fluid">
    <ul   role="menu" >
        <? if (($user->type_id == 1) || ($user->type_id == 2)) { ?>
            <li>
                <div class="icon system-settings">
                </div>
                <div class="action-text">
                    <span>
                        System Settings
                    </span>
                </div>
                <a href="/admin/system_settings"></a>
            </li>
        <? } ?>
        <? if (($user->type_id == 1) || ($user->type_id == 2)) { ?>
            <li>
                <div class="icon email-settings">
                </div>
                <div class="action-text">
                    <span>
                        Email Settings
                    </span>
                </div>
                <a href="/admin/email_settings"></a>
            </li>
        <? } ?>
    </ul>
</div>
<div id="cat_people" class="cat_menu row-fluid">
    <ul  role="menu" >
        <? if ($user->type_id == 1) { ?>
            <li>
                <div class="icon system-admins">
                </div>
                <div class="action-text">
                    <span>
                        System Admins
                    </span>
                </div>
                <a href="/admin/admin_list"></a>
            </li>
        <? } ?>
        <? if ($user->type_id == 1 || $user->type_id == 2) { ?>
            <li>
                <div class="icon company-admins">
                </div>
                <div class="action-text">
                    <span>
                        Company Admins
                    </span>
                </div>
                <a href="/admin/company_admin_list"></a>
            </li>
        <? } ?>
    </ul>
</div>
</div>


<script>

$('.cat_menu li').each(function(){
    var link = $(this).data('href');
    var url = window.location.href;

    if ( link = url ) {
    $(this).addClass('yuuuuup');
    } else {
    $(this).addClass('nooooope');
    }
});
</script>

  • 系统设置
  • 电子邮件设置
  • 系统管理员
  • 公司管理人员
$('.cat_menu li')。每个(函数(){ var link=$(this.data('href'); var url=window.location.href; if(link=url){ $(this.addClass('yuuup'); }否则{ $(this.addClass('noooop'); } });
我想您打算在这里使用a==

if ( link = url ) {

这里至少有几件事不对。首先,您使用的是
$(this.data('href')
检索li中锚定标记的href。除非您遗漏了相关代码,否则根据您发布的内容,这将不起作用。相反(同样基于您所拥有的),要获取URL,请执行以下操作:

var link = $('a', $(this)).attr('href');  //Assumes only one anchor is contained within the li
然后,按照您编写此代码的方式,您需要检查当前页面的URL中是否包含当前迭代的href。你可以这样做:

if (url.toLowerCase().indexOf(link.toLowerCase()) != -1){
    $(this).addClass('yuuuuup'); // Match
} else {
    $(this).addClass('nooooope');  //No match
}
当然,您可以修改代码以查看URL是否匹配,并且有多种方法来完成您尝试执行的操作。但这两件事都是错的