2016-12-08 8 views
1

어떻게 jQuery 선택기를 콜백 함수로 보낼 수 있습니까? 예를 들어, 다음 코드는 버튼 클릭시 jQuery 객체가 선택한 버튼을 숨 깁니다.jQuery 셀렉터를 콜백 함수로 보내기

function cb (target) { 
    target.hide(); 
} 

$('#button').on('click', cb); 

답변

1

기능은 당신은 아무것도 통과하지 않아도 이벤트를 발생시킨 요소의 범위 내에서 실행 - 단지 this 키워드를 사용합니다. 예 : $(this).hide() :

function cb() { 
 
    $(this).hide(); 
 
} 
 

 
$('#button').on('click', cb);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<button id="button">Hide me!</button>
이제

+0

이 jshint은 "이"와 오류를 던지고 강조한다 : ". 가능한 엄격한 위반" 유효 자바 스크립트 인 경우 오류가 발생한 이유는 무엇입니까? –

+0

아마도 함수가 올바른 범위에서 정의되지 않았다고 생각하기 때문에'this'는 예상 값이 아닙니다. 이 코드가 전적으로 유효한 코드임을 확신 할 수 있습니다. 경고를 피하려면 이벤트 핸들러에 함수를 직접 넣으십시오 : $ ('# button'). on ('click', function() {$ (this) .hide()}); 분명히 이것은 당신이 사용하고 있던 DRY 논리를 막을 수 있습니다. –

+0

분명히 유효한 코드이기 때문에 콜백 함수에서/* jshint validthis : true * /를 추가하여 jshint 오류를 억제하는 더 좋은 해결책을 찾았습니다. "this"사용에 대한 귀하의 도움에 감사드립니다! –