0

そのため、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>
4

2 に答える 2

0

ここで == を使用するつもりだったと思います

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

ここには、少なくとも 2 つの問題があります。まず、$(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 が一致するかどうかを確認することもできます。また、目的を達成する方法は複数あります。しかし、それらは間違っていた2つの大きなことでした。

于 2013-07-02T21:57:20.740 に答える