이 하나에 해당이 줄"this"구문은 어떻게 작동합니까?
$(this).attr("id").replace("_button","");
인가?
this.attr("id").replace("_button","");
이 하나에 해당이 줄"this"구문은 어떻게 작동합니까?
$(this).attr("id").replace("_button","");
인가?
this.attr("id").replace("_button","");
this
은 항상 object of invocation
에 대한 참조를 포함하고 있기 때문에 실제로 에 의존하며 코드를 호출합니다. 당신이 jQuery event handler
내에서 이것을 호출하면
는 this
는 DOM element
자체에 대한 참조입니다, 그래서 당신은 당신이 그것에 jQuery를 메서드를 호출하기 전에 $()
를 호출하여 jQuery를 객체로 번역해야합니다. 즉, 의미는
this.attr("id").replace("_button","");
입니다.
당신은 예를 들어 플러그인 방식을 writting 경우
,this
이미
는
jQuery object
(
reference
) IS 두 선이 같은 사실을 것입니다. 물론
this
이 이미
jQuery object
인 경우 추가 작업을하고 다시 구문 분석을 시도하십시오.
예 :
$.fn.yourplugin = function(){
// this refers to a jQuery object
return this.each(function(i,v){
});
});
+1 : 거의 똑같은 생각을 가지고있는 +1 : p (복사 붙여 넣기 : D) (그리고 나는 호출 대상 *을 좋아합니다.) –
방금 깨달았습니다. 그 crockford 맞아, 그는 어딘가에 '이'에 대해 이야기하기 어렵다고 언급했다. "당신이 이것을 부르는 경우"는 독자에게 이미 문제가됩니다. – jAndy
아니요. jquery 메소드에 사용 된 클로저의 컨텍스트에있는 것처럼 들립니다. 함수 내에서 현재 DOM 객체를 가리키고 jquery 함수는 불가능합니다. 그것이 jquery 함수로 포장되어 그 객체를 얻는 이유입니다.
상황에 따라 다르지만 그렇지 않을 수 있습니다.
당신이 이벤트 핸들러가있는 경우
는 말 :$('#_button_foo').click(function() {
$(this).attr("id").replace("_button","");
});
그런 다음 this
가 DOM 요소 $(this)
반면이의 jQuery 객체를 만들고이 객체에 jQuery를 함수를 호출하게 참조 할 것이다. 당신이 플러그인을 개발하고
jQuery.fn.plugin = function() {
this.each(function() {...});
}
이있는 경우 다른 측면에서
this
은 당신이 메서드를 호출 jQuery 오브젝트를 말합니다.
downvote는 적어도 이유를 설명 할 수 있습니다. 고마워요 :) –
+1 거의 똑같은 생각을 가지고 있습니다 : p – jAndy
$ (이) 당신이 jQuery를 기능을 사용할 수 있도록하는 jQuery를 객체로 DOM 개체를 설정합니다.
그래서 $(this)
과 this
은 같지 않습니다.
this
은 전역 범위에서 window
을 나타내며 메서드 호출에서 메서드가 호출되는 개체를 나타냅니다.케이스 this
에서
아마도 이벤트 (click
, hover
등)와 같은 다른기구의 jQuery 또는 요소 (jQuery.each
등)의 목록의 반복으로 인출되는 DOM의 요소를 참조한다. 이 경우 DOM 요소 만 가져 오지만 attr
과 같은 jQuery 메서드의 확장이 포함 된 jQuery 객체는 가져 오지 못합니다. 따라서 $
생성자 함수를 사용하여 jQuery 객체로 변환해야합니다.
자바 스크립트에서 키워드 'this
이'누구의 맥락 당신이하고있는 객체를 참조합니다. 당신이 방법 항목의 코드 안에 다음, myObj.method1()
를 호출하는 경우 그래서, 'this
'myObj
를 참조합니다.
jQuery에서 대부분의 연산은 종종 jQuery 래퍼라고하는 jQuery 결과 집합 객체를 반환합니다. 예를 들어 선택기 $("a")
은 DOM 요소가 모두 <a>
인 jQuery 결과 집합을 반환합니다. $("a").get(0)
는
$(this)
가 jQuery를 래퍼 객체를 참조 등
$("a").get(1)
번째 앵커 반환, 제 앵커 DOM 요소를 반환하고
this
는 DOM 요소를 지칭한다.
그럼 모두 합하면 $(this).get(0)
은 this
과 같습니다.
this
은 항상 현재 함수가 구성원 인 개체를 나타냅니다. 함수가 전역 인 경우 적어도 웹 브라우저에있는 경우 일반적으로 window
개체입니다.
$(this)
은 앞서 언급 한 this
을 파라미터로 사용하여 호출 된 $()
(주 jQuery 함수)입니다. 모든 jQuery 메서드를 제공하는 jquery 객체에 this
을 래핑합니다. 이 방법은 this
에서만 사용할 수 있습니다.
사용하는 컨텍스트에 따라 다릅니다.
$(this)
은 jQuery 개체이고 this
은 DOM 개체입니다.
그래서 동일하지 않습니다.
jquery 플러그인을 개발중인 경우 this
은 $(this)
과 같습니다.
나는 그렇지 않다고 생각합니다.
대신 this.id.replace ("_ button", "")를 사용할 수 있습니다.
이 코드에 대한 자세한 내용은 도움이 될 것입니다. 나는 대답을 남겼으나 이것이 어디서 왔는지에 따라 틀릴 수있는 몇 가지 가정을했다. – spinon