2011-11-07 6 views
1

현재 특정 앵커 태그가 특정 텍스트를 포함하고 있는지 확인해야합니다. 그럴 경우 다른 요소의 텍스트를 변경해야합니다. 예를 들어 다음 코드가 있습니다. 그러나 앵커 태그 안에 무엇을 넣든 항상 "예!"라고 경고합니다.jQuery의 If-then 문

if ($("a:contains('Level 2 (Admin Only)')")) { 
    alert("yup!"); 
} 
else { 
    alert("nope!"); 
} 

내가 뭘 잘못하고 있니? 다른 선택기 메서드를 사용해야합니까?

답변

4

즉.

이 시도 :

if($("a:contains('Level 2 (Admin Only)')").length) { 
    alert("yup!"); 
}else{ 
    alert("nope!"); 
} 
+0

'length! = 0'? Meh. 이것은 JavaScript입니다. 진리를 사용하십시오! –

+0

@MattBall은 OP 문과 if 문을 동일하게 유지하기를 원했습니다. – Neal

+0

감사합니다. – captainrad

5

jQuery 객체의 크기를 확인해야합니다. jQuery는 일치하는 모든 요소로 구성된 객체를 반환합니다. $("a:contains('Level 2 (Admin Only)')")이 항상 true때문에

// If .length == zero, it evaluates to false in an if condition 
if ($("a:contains('Level 2 (Admin Only)')").length) { 
2

JQuery와 방법 항상은 선택이 어떤 요소 또는하지를 일치 여부 객체가 반환을; 객체는 항상 truthy입니다.

당신은 하나가 아니었다면 요소가 일치하는 경우 truthyfalsy이 될 것이다, 대신 .length 속성을 사용해야합니다.

if ($("a:contains('Level 2 (Admin Only)')").length) { 
    alert("yup!"); 
}else{ 
    alert("nope!"); 
}