2013-07-10 2 views
0

오늘이 코드를 사용하고 있습니다.이벤트 핸들러에서 이벤트를 발생시킨 요소를 참조하십시오.

$("#textBox").on("keyup", function() { 
    //if (this.val().length > 4); 
    if ($("#textBox").val().length > 4) 
    console.log("TextBox written to."); 
}); 

그러나, 나는 그것이 나에게 내가 텍스트 상자의 ID에 대한 하드 코딩 참조를 사용하고 조금 귀찮게. "이 이벤트 핸들러가 호출 한 사람이 누구인지"라고 말하고 싶습니다. 물론 작동하지 않았다 (내 생각은 그런 기능 자체 또는 무언가를 의미한다는 것이다.

  1. 내가
  2. 이 무엇인가?에 "누구 이건 ..."참조 어떻게이 언급?

답변

1

사용 '이'선택과 같은 :

$("#textBox").on("keyup", function() { 
    if ($(this).val().length > 4) 
    console.log("TextBox written to."); 
}); 
2

아니, $(this) 작동합니다. jQuery를 보장 개체가 작용에 this이 참조가 될 것입니다.

하우 ver, this은 DOMNode입니다. jQuery 특정 함수 val에 액세스하려면 jQuery 객체로 포장해야합니다. $(this).val() 또는 this.value 중 하나를 수행 할 수 있습니다.

1

이 확실히 작동합니다

if (this.value.length > 4) 

this 핸들러가 부착 된 DOM 요소에 여기 말합니다. 익명 콜백 함수는 이에 대한 특정 컨텍스트를 만듭니다.

+0

jQuery 선택기 구문에 아무런 문제가 없습니까? –

+0

@KonradViltersten은이 구문을 좀 더 잘 만들어 줄 필요가 없습니다. 값은 모든 입력 DOM 노드의 속성입니다. 예 : 텍스트 영역의 경우 다를 수 있습니다. –

+0

차가움. 나는 이것이 조금 더 깔끔한 문법이라는 것에 동의한다. 나는 jQuery에 의존하여 나무를 보는 것을 잊어 버렸습니다. sytax 또는 jQuery에 대한 advatage에 단점이 있습니까? –

관련 문제