2012-04-22 3 views
0

href이 없거나 비어있는 모든 링크를 강조 표시하려고합니다. http://jsfiddle.net/nSMEf/요소 선택기가있는 조건부 서식

$(document).ready(function() { 
    if ($('.green').attr("href") == "" || typeof $('.green').attr("href") === 'undefined'){ 
     $('.green').attr('class', 'yellow'); 
    } 

    if ($('.blue').attr("href") == "" || typeof $('.blue').attr("href") === 'undefined'){ 
     $('.blue').attr('class', 'yellow'); 
    } 
}); 

내가 문이 적용 듯 경우 만있는 링크가 먼저 온 것을 발견하고, 다음의 모든 링크가 같은 스타일 될 것이다 : 나는 다음 썼다. 두 번째 "파란색"그룹은 첫 번째 그룹과 동일하지만 순서가 전환되었습니다.

내 접근 방식이 옳지 않습니다. 노란색 클래스를 각 요소에 조건부로 (href가 비어 있거나 없으면) 적용 할 수 있습니까?

답변

2

것이 도움

$("a").each(function(){ 

     if(!($(this).attr("href")) || $(this).attr("href") == "") { 
      $(this).addClass("yellow"); 
     }  
    }); 

업데이트 jsfiddle : 위의 코드 http://jsfiddle.net/nSMEf/3/

편집 주석

$("a").each(function(){ 
    var self = $(this).attr("href"); 
    if(!(self) || self == "") { 
     $(this).addClass("yellow"); 
    }   
}); 
+0

유일한 주석은'$ (this) .attr ('href')'를 캐시하는 것이 합리적 일 수 있다는 것입니다. 그렇지 않으면 +1 할 때보 다 효율적입니다. =) –

+0

좋은 제안. 나는 같은 대답으로 업데이트 할 것이다 – DG3

+0

새로운 것을 매일 배웁니다 :) 고마워요! –

1

의 제안 안녕 데모http://jsfiddle.net/5ehtZ/에 따라 || http://jsfiddle.net/5ehtZ/2/

코드

$("a").each(function(){ 
    //do something with the element here. 
    if (!($(this).attr("href")) || $(this).attr("href") == ""){ 
     // now blue and green diff is not needed because you append yellow if they are empty. 
     $(this).attr('class', 'yellow'); 
    } 

}); 
​ 
+0

:(정의되지 않은 정의되지 않았습니다 –

+0

@MiaDiLorenzo 아하 그것을 업데이 트됩니다 내가 href가 항상 거기에 최종 개체와 함께있을 거라 생각했기 때문에 유일한 수지 내가 제거 t. :) 그리고 다 환호했다! –

1

기다립니다 .. 무엇?

jQuery 선택기가 작업을 수행하지 않습니까?

$ ('blue [href = ""]'). addClass ('yellow');

+0

href가 정의되지 않은 경우 (번호 3)를 어떻게 다룹니까? –

+0

$ ('blue : not ([href])'). addClass ('yellow') 대부분의 경우 Fizzle은 루핑보다 빠릅니다. : P – DanRedux

+0

나는 밀도가 있습니다. 어떻게 [href = ""]를 : not ([href])와 결합합니까? –