0

所以我试图根据与li中a标签的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>
4

2 回答 2

0

我想你打算在这里使用 ==

if ( link = url ) {
于 2013-07-02T21:45:20.147 回答
0

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

var link = $('a', $(this)).attr('href');  //Assumes only one anchor is contained within the li

然后,使用您编写此代码的方式,您需要检查当前迭代的 href 是否包含在当前页面的 URL 中。你可以这样做:

if (url.toLowerCase().indexOf(link.toLowerCase()) != -1){
    $(this).addClass('yuuuuup'); // Match
} else {
    $(this).addClass('nooooope');  //No match
}

您当然可以修改代码以查看 URL 是否匹配,并且有多种方法可以完成您想要做的事情。但这是错误的两件大事。

于 2013-07-02T21:57:20.740 回答