2011-08-24 2 views
3

주어진 코드 :"여기"가 무엇을 의미합니까?

$(element, document).mousedown(function() { 
     $(this).attr('id'); // get id of the element 

}); 

this을 사용하지 않고 코드를 다시 작성하는 방법은 무엇입니까?

+6

이유 :

$(element, document).each(function(ind, elem) { elem.mousedown(function(){ elem.attr('id'); }); }); 

+0

질문에서'$ (element, document)'가'$ (selector, context) '로 변경 되었다면 이것은 매우 적합합니다. 그 안에 특별한 경우를 묻고 있습니다 – naveen

답변

1

는 다음과 같은 사용할 수 있습니다

: 그래서, 대신, 당신은 고려할 수 있습니다? 그게 뭐가 잘못 됐어?
1

this 키워드가없는 버전 :

var $element = $('#element'); 
$element.mousedown(function() { 
    var id = $element.attr('id'); 
     // id is now 'element' 
}); 
+1

사실 : #element 선택자가 하나 이상의 요소와 일치하면 어떻게 될까요? ;) – Tigraine

+2

그렇지 않습니다. 그렇다면 HTML을 수정하십시오. – Simeon

+0

그것의 ID 어떻게 1 개 이상 일치시킬 수 있습니다! :/ – Baz1nga

3

이 무엇의 약자입니까? 현재의 mousedown 속성을 정의하는 요소에 이러한 맥락에서

, this 점.

여기에서는 사용하지 않을 이유가 없습니다. 당신이하고 싶은 일에 대해 자세히 설명해 주시겠습니까?

0

이 경우 "this"는 클릭 된 요소를 참조합니다. 필요하지거야하지만 당신은 모든 요소에 대해이 같은 코드를 가지고해야합니다 :

$("#button").mousedown(function(){ 
$("#button").attr("id"); 
}) 

그것은 함수의 실행 컨텍스트를 의미 자바 스크립트로

+0

@cwallenpoole 왜 나에게 대답을 편집합니까? – Coomie

+0

닫기를 놓치 셨습니다. – cwallenpoole

0

이에 둘 훨씬 쉽다. 이 경우 jQuery에서 설정 한 요소에 this을 설정하면 도움이됩니다. 그러나 자체 작성 기능을 사용하면 일반적으로 전역 개체를 참조하여 끝납니다.

새로운 기능 범위를 입력 한 경우 새 기능이 새 기능 범위를 갖기 때문에 대개이 기능을 유지해야합니다. 예

$('div').each(function(index, item) { 
    var that = this; 
    $(this).mousedown(function() { 
     //this could be something different than before 
     //so we use the that reference 
     $(that).hide(); 
    } 
}); 
0

들어

은 "이"기능의 범위를 말한다. 함수와 관련하여, 이것은 동작중인 요소입니다. 당신이 코드를 작성한 경우, 액션은 마우스가 떼 지므로, 실행중인 요소는 이것입니다. 희망이 도움이됩니다.

0

문제는 this을 사용하는 것보다 더 효율적인 것을 얻지 못할 것이라는 것입니다. 그 밖의 모든 것들은 두 번째 요소 조회를 필요로하거나 다소 비싸지 만 스코프 (this)에있는 객체를 사용하는 것보다 비용이 많이들 것입니다.

엄격히이 가장 문자 적 ​​해석, 말하기 : 지금

$(element, document).mousedown(function() { 
     $(element, document).attr('id'); 
}); 

이 확인 될 수도 있지만 당신의 요소는 실제로 (클래스 선택과 같은) 여러 값을 반환하는 선택하는 경우, 당신은거야 문제가있다.

$(element, document).mousedown(function(e) { 
     $(e.target).attr('id'); // Get id of the element. 
});