2012-01-26 1 views
2

이 질문에 대한 간단한 대답이있을 수 있지만 필자의 삶을 위해서 나는 $ .add를 사용하는 다음 두 가지 방법을 왜 이해하지 못한다.() 다른 결과 집합을 제공합니다.JQuery : .add()를 사용하여 기존의 일치하는 집합에 요소를 더 추가하기

var toBeSorted; 

if (contextEl.hasClass("lv")) 
    toBeSorted = $(".lv", contextEl).add(contextEl); 
else 
    toBeSorted = $(".lv", contextEl); 

IF 문이 참

var toBeSorted = $(".lv", contextEl); 

if (contextEl.hasClass("lv")) 
    toBeSorted.add(contextEl); 
, 대 난 항상 결과에서 설정, 즉 contextEl입니다 바닥 코드 세그먼트 (보다 상위 코드 세그먼트에서 또 하나 개의 요소를 얻을 - 그것은 정확하게 내가 원하는 것입니다). 왜 아래쪽 메서드의 호출 toBeSorted.add (contextEl) 트릭을하지 않는 이해가 안돼?

모든 조언이나 조언을 바랍니다.

감사합니다.

답변

7

첫 번째 코드 블록에서와 마찬가지로 .add() 뒤에 결과 개체를 toBeSorted으로 다시 작성해야합니다. 현재 세트에 스택에 요소의 이전 세트를 추가,이 경우 andSelf를 사용하는

toBeSorted = toBeSorted.add(contextEl); 
+0

oh !!! 당연하지! 고맙습니다! 나는 그것이 단순한 무엇인지 알았다. 실제로 원래 변수를 수집하거나 수정하지 않는다는 사실을 잊어 버렸습니다. 다시 한번 감사드립니다. – JoJoeDad

1

보십시오.

var toBeSorted = contextEl.find(".lv"); 

if (contextEl.hasClass("lv")) 
    toBeSorted.andSelf(); 
+0

고마워요, 그게 더 좋은 솔루션입니다. (당신이 $ .andSelf()를 의미한다고 생각합니다. 좀 더 우아 해 보이니까요.하지만 tandu가 지적했듯이, 다음과 같을 필요가 있습니다 : 'toBeSorted = @BoSorted.andSelf();' – JoJoeDad

+0

@JoJoeDad - 예, 그렇습니다. 셀프, 오타였습니다. 알려 줘서 고마워. – ShankarSangoli

관련 문제