基于URL突出显示

时间:2013-07-02 21:40:35

标签: jquery url tags indexof

所以我试图根据匹配li中标签的href的URL向li添加一个类。我目前的代码是为每个li添加一个类,但我需要尝试将其添加到仅包含匹配标记的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>

2 个答案:

答案 0 :(得分:0)

我认为您打算使用== here

if ( link = url ) {

答案 1 :(得分:0)

这里至少有一些问题。首先,您使用$(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
}

您当然可以修改代码以查看URLS是否匹配,并且有多种方法可以完成您要执行的操作。但那些是错误的两件大事。