2013-10-28 3 views
0

제목으로 익명 함수를 사용하지 않고 요소를 함수에 전달할 수있는 방법이 있습니까? 나는 다음과 같이 내가 함수에 요소를 전달할 수 있습니다 알고jquery에서 익명 함수없이 요소를 함수로 전달

:

또는 다른 말로

때문에 시험의 일부 문제에 나는 익명 함수를 사용하여 방지하기 위해 필요하고 같이하지 수용
function fakeFunction(elementReceived){ 
    elementReceived.hide(); 
} 
$(".class-x").each(function(){ 
    fakeFunction($(this)); 
}); 

.

그래서 나는이 같은 쓰기 :

function fakeFunction(){ 
    $(this).hide(); 
} 
$(".class-x").each(fakeFunction); 

이 더 나은하지만 가독성이 실제 코드의 함수로, 감소를 아주 멀리 호출 라인으로부터 직접입니다 $ (이)를 사용하여 혼란 스럽다.

나는 들었다 (및 조사 요청 된) 그 가능해야 다음과 같은 : 위의 코드에서 $ (이) 대신 전체 문서를 전달

function fakeFunction(elementReceived){ 
    elementReceived.hide(); 
} 
$(".class-x").each(fakeFunction, $(this)); 

하지만를 ..... 그것을 작성하는 올바른 방법은 무엇입니까?

+1

테스트 과정을 피하기 위해 해킹을 추가를 안내하는 경우 jQuery와 완벽하게 (그리고 권장되는) 패턴을 테스트한다면, 나는 또한 테스트 프로세스를 검토 할 것을 제안 할 것이다 ... – LeGEC

+0

제안이 좋지만 짧은 시간 안에 쉽게 할 수있는 것이 아니다. 현재 내 코드를 변경하는 것이 더 나은 옵션이 될 것입니다. – cytsunny

+0

알아. 그냥 소리 내고있어. – LeGEC

답변

3

the documentation for each을 보면 함수의 두 번째 인수가 요소라는 것을 알 수 있습니다 (예 : this). 그래서 :

function fakeFunction(index, element){ 
    $(element).hide(); 
} 
$(".class-x").each(fakeFunction); 

(물론,이 특별한 경우에, 실제로 다른 작업을 수행 방금 $(".class-x").hide();을 할 수있는,하지만 난 fakeFunction 가정합니다.)

+0

이것은 가독성을 향상시키고 내 문제를 해결하는 동안 ..... 요소를 직접 전달할 수있는 방법은 없습니까? 두 번째 인수는 실제로 문자열이며 $ (element) .hide()가 여전히 필요합니다. element.hide() 대신에; (하지만 지금은 문제가 아니라 단지 호기심입니다.) – cytsunny

+0

@ user1273587 : 두 번째 인수 *는 문자열이 아니며 DOM 요소입니다. '$()'를 사용하여 jQuery 인스턴스에 래핑하면 jQuery에 액세스 할 수있다. 예를 들어 jQuery를 사용하지 않고 그것을 숨기려면'element.style.display = "none";을 할 수 있습니다. –