2011-04-20 3 views
1

jQuery에서 if/then 문 작성하기

var myDefault; 
if $('th.default') { 
    myDefault = $('th.default'); 
} else { 
    myDefault = $('th:eq(2)'); // 3rd column 
} 

아마도 다음과 같은 것을 사용합니다 :

var myDefault = $('th.default') || $('th:eq(2)'); 

class = "default"가없는 경우 첫 번째 선택이 false를 반환하지 않는다는 점을 제외하고는 ".

답변

2
var myDefault = $('th.default'); 
if (!myDefault.length) { myDefault = $('th:eq(2)'); } 
+0

Eli는 자신의 답을 광산처럼 업데이트했지만, 내 생각은 여전히 ​​더 정확한 방법입니다. 캐싱을 위해 그는 2 개의 변수를 만들고 광산은 1을 만듭니다. 당신은 삼항 연산이 필요 없습니다. 원래 jQuery 객체'$ ('th.default')가 존재하지 않는 경우에만'myDefault'를 다시 정의하면됩니다. –

1
var myDefault; 
if ($('th.default').length) { 
    myDefault = $('th.default'); 
} else { 
    myDefault = $('th:eq(2)'); // 3rd column 
} 
1

당신은 진정한

if $('th.default').length {} 

조건부 수익률을 사용해야합니다. 객체는 빈 jQuery 선택 자일 수 있지만 여전히 true를 반환합니다. 선택기에 일치 항목이 없으면 length은 "0"을 반환합니다. 이는 위증입니다.

편집 : 나는 이것을 방법으로 사용했습니다 ... 재산이어야했습니다!

+0

'length'는 함수가 아니지만'size()'는입니다. –

+0

아는 한 jQuery 길이 함수가 없습니다. – Eli

+0

@TheSuperTramp 및 @Eli http://api.jquery.com/length/ .size() 메서드는 기능상 .length 속성과 동일합니다. 그러나 .length 속성은 함수 호출의 오버 헤드가 없으므로 선호됩니다. –

6
var myDefault = $('th.default').length ? $('th.default') : $('th:eq(2)'); 

또는 당신이 :) 캐싱 사랑한다면 :

var defaultElement = $('th.default'); 
var myDefault = defaultElement.length ? defaultElement : $('th:eq(2)'); 
+0

동일한 jQuery 객체에 대해 DOM을 다시 쿼리하는 이유는 무엇입니까? Use는 내 솔루션 용도와 마찬가지로 캐싱을 사용해야하며 이는 다시 터너 리 솔루션이 필요 없다는 것을 의미합니다. –

+0

나는 내 솔루션에 동의합니다. 나는 단순히 생산 코드가 아닌 요소를 전환하는 삼자 항을 사용하는 방법을 보여 주기만하면됩니다. – Eli

+0

나는 많은 것을 알았다. 저는 원래 jQuery 객체를 캐시하고 항상 동일한 객체를 다시 쿼리하지 않으려 고하기 때문에 원래는 그렇지 않았기 때문에 분명히 지적하고 싶었습니다. 영업 사원이 임시 변통 삼각형을 만들려고 했음에도 불구하고 myDefault에 $ ('th.default')를 캐싱 할 때 이후로 다시 정의해야 할 필요가 있기 때문에 OP에 대한 가장 효율적인 방법은 아닙니다. myDefault는 존재하지 않는 경우입니다. –

1

$('th.default')이의 jQuery 객체를 반환합니다, 그래서 false 될하지 않습니다.

당신은 요소를 확인하기 위해 배열 표기법을 사용할 수 있습니다 $('th.default')[0] 요소가 일치 한 경우 true를 반환합니다 (첫 번째 일치하는 요소를 포함한다) 또는 더 일치하는 요소가없는 경우 false를 반환합니다.

당신은 테스트하고 삼항 연산자로 myDefault을 설정할 수 있습니다

var myDefault = $('th.default')[0] ? $('th.default') : $('th:eq(1)'); 

Here's a working demo. 그냥 두 사이를 전환 할 수 class="default"를 제거합니다.