2012-05-23 2 views
3

IT는 $.click() 기능 후에 $.(this)을 다시 선언 할 수 없습니다? 이 중 어느 것도 작동하는 것 같다 없기 때문에 : foo 법적 식별자

$(this) = $(this).find('span'); 
var $(this) = $(this).find('span'); 
+0

'$ (this)'는 변수가 아닙니다. '$'는 변수이고 함수입니다. (값이 전달 될 때) 값을 리턴합니다. –

+1

이것은 기본적인 자바 스크립트 구문을 이해하고 실제로는 첫눈에 jquery와 관련이 있습니다. 나는 당신이 어떤 문학을 파헤쳐야한다고 말한다. – Yoshi

+0

당신의 도움을 주셔서 고맙습니다. 사실 jQuery 프레임 워크와 자바 스크립트를 조금씩 배우고 있습니다. – Alex

답변

4

var foo을 선언 할 수 있습니다.

$(this)가 인수 this$라는 이름의 함수가 그래서 선언에서 불법입니다를 호출 한 결과입니다.

도 아니다 당신이 this을 덮어한다 - 그것은 미래에 긁힘 많은 머리의 원인이됩니다! 당신이 원하는 경우

다음 일반적인 규칙을 this의 jQuery를 버전을 저장하기위한 지역 변수은 다음과 같습니다 (완벽하게 합법적,하지만 때로는 눈살을 찌푸리게) $ 접두사 수 있습니다

var $this = $(this); 
var $span = $this.find('span'); 

당신은 변수 기억하기 는 jQuery 객체이며 일반 DOM 요소는 아닙니다.

규칙은 또한 당신이하고의 낭비 (그러나 공통) 오류를 발견 할 수 있다는 :

var jqobj = $(myobj) 

myobj 이미 JQuery와 객체 입니다.

+0

왜 var $ this = $ (this) .find ('span');'? 그것은'$ this' 만'$ (this)'를 참조해야하고,'this'의 자손은 참조하지 않아야하기 때문에 – Alex

+0

@ w0rldart도 작동합니다. 물론 작동하지만 코드를 읽는 다른 사람을 혼동하게 만듭니다. 'this' 변수는 특별한 종류이기 때문에 같은 방식으로'$ this'를 다루어야합니다. – Alnitak

+0

오, 봐요 ...하지만 그건 내가 가능한 한 적은 코드로 작성하는 걱정, 지금 걱정 게 아니에요 : D – Alex

3

$(this) 변수 선언되지 않지만 대신 표현이다. 당신이 뭔가를 재 선언 할 경우 실제 식별자에 할당되기 때문에 당신은 최종 버전이 작동하는 변수

var saved = $(this); 
saved = $(this).find('span'); 

이유에 저장하는 것입니다 필요가있다.

+0

왜 'var $ this = $ (this) .find ('span ');'? 그것도 작동합니다 – Alex

+1

@ w0rldart 그것은 동일한 해결책이지만 'saved'대신에 식별자 '$ this'를 선택합니다.어느 쪽 작품 이건, 당신이 선호하는 이름을 선택하는 것일뿐입니다. – JaredPar

+0

@JaredPar IMHO,'$ this'는'$ (this)'만 참조해야합니다. – Alnitak

2
$('some').on('click', function() { 
    var refrence = $(this); 
    var span = refrence.find('span') 
    // to override the $this you can use 
    refrence = refrence.find('span'); 
}); 
+0

심각하게, 선언 한 후에'$ this'의 의미를 바꾸지 마십시오 - 장래에 혼동을 일으킬 수도 있습니다. 새로운 변수를 사용하십시오! – Alnitak

+0

@Alnitak 감사합니다. – thecodeparadox