2013-07-02 45 views
0

所以我试图添加一个类到李,基于匹配li内的标签的href的URL。我目前的代码是向每一个li添加一个类,但是我需要尝试让它只添加到包含匹配标签的li。这有任何意义吗?任何帮助将不胜感激。基于URL的突出显示

我的代码:

<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> 

回答

0

我想你打算使用==这里

if (link = url) { 
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 
} 

你当然也可以修改代码,看看是否网址都符合,并且有多种方式来完成你正在尝试做的。但那是错误的两件大事。