2013-07-02 1 views
0

그래서 li에있는 태그의 href와 일치하는 URL을 기반으로 li에 클래스를 추가하려고합니다. 현재 코드는 모든 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을 얻으려면, (다시 당신이이 기준), 이렇게 : 현재 반복의 HREF가에 포함되는 경우

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

그런 다음이 코드를 작성한 방법으로, 당신은 확인해야 현재 페이지의 URL 당신이 뭔가를 할 수 있습니다 :

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

당신은 물론 URL이 일치하는지 확인하기 위해 코드를 수정할 수 있고, 당신이 뭘 하려는지 달성하기 위해 여러 가지 방법이 있습니다. 그러나 그것들은 틀린 두 가지 큰 것들이었습니다.