2012-02-27 4 views
1

클릭 한 것을 제외한 모든 링크에 클래스를 적용하는 함수를 찾고 있습니다.jquery 특정 클래스가있는 링크를 제외한 모든 링크를 선택하십시오.

CSS

.foot_active { 
    text-decoration:underline; 
} 
.foot_inactive { 
    text-decoration:none; 
} 

HTML

<div class="sitemap"> 
    <table class="table_site"> 
     <tr> 
      <td class="subsite"><a>op1</a></td> 
      <td class="subsite"><a>op2</a></td> 
      <td class="subsite"><a>op3</a></td> 
     </tr> 
    </table> 
</div> 

스크립트이 스크립트는 처음으로 작동

$('a:contains("op1")') 
    .live('click', function(){ 
     $(this).addClass('foot_active'); 
     $('a:not(.foot_active)').addClass('foot_inactive'); 
    }); 
$('a:contains("op2")') 
    .live('click', function(){ 
     $(this).addClass('foot_active'); 
     $('a:not(.foot_active)').addClass('foot_inactive'); 
    }); 
$('a:contains("op3")') 
    .live('click', function(){ 
     $(this).addClass('foot_active'); 
     $('a:not(.foot_active)').addClass('foot_inactive'); 
    }); 

당신이 링크를 클릭,하지만 미래 클릭합니다. 나는 뭔가 잘못하고 있다고 생각하지만, 내 두뇌는 지금 너무 화가 난 것 같습니다.

감사합니다.

답변

1

당신은 시도 할 수 :

$('.sitemap a') .live('click', function(){ 
    $(this).addClass('foot_active'); 
    $('.sitemap a').not(this).removeClass('foot_active'); 
}); 
0

당신은 시도 할 수 ...

$('a.foot_active').removeClass('foot_active').addClass('foot_inactive'); $(this).removeClass('foot_inactive').addClass('foot_active');

...

은 당신이 원하는 게 무엇?

2

클래스를 제거하지 않으므로 비활성 클래스를 가진 모든 링크가됩니다.

실제로 비활성 클래스가 필요하지 않습니다. 활성 클래스를 제거하기 만하면됩니다. 이것은 당신의 세 가지 이벤트 핸들러를 대체합니다 :

$('a') .live('click', function(){ 
    $(this).addClass('foot_active'); 
    $('a').not(this).removeClass('foot_active'); 
}); 

당신은 페이지에서 더 이상 링크가있는 경우 '.subsite a'처럼 'a'보다 더 구체적인 selctor을 사용할 수 있습니다.

0

다른 모든 요소는 변경하지 않으려합니다. 요소는 많은 클래스를 가질 수 있으므로 활성 클래스 만 토글합니다. 이 jQuery를 1.7에서 더 이상 사용되지 않습니다으로

$('.table_site a').addClass('foot_inactive').click(function(){ 
    $('.foot_active').removeClass('foot_active'); 
    $(this).addClass('foot_active');  
}) 
1

첫째, 당신은 .live()을 사용할 수 없습니다.

여기가 당신이 찾고있는 것입니다. .sitemap라는 클래스 TD 내부의 모든 링크에 대한

$('.sitemap a').click(function(){ 
    $('.sitemap a').toggleClass('foot_inactive',true).toggleClass('foot_active',false); 
  $(this).addClass('foot_active');     
}); 
관련 문제