2010-12-23 5 views
0

이것은 간단한 질문이지만 해당 답변을 여기에서 보지 못했습니다. 나는 다음과 같은 코드를 가지고 :jQuery : 선택된 모든 요소에 JS 함수 바인딩하기

$('.thumbImg').mouseout(function(){selectCur()}); 
//selectCur() is a pure-JS function defined elsewhere in the document 

하지만 기능은 클래스 .thumbImg와 함께 첫 번째 요소에 바인딩됩니다. 일반적으로, 나는 $(this)을 사용 하겠지만, 여기서는 작동하지 않을 것입니다. (내가 잘못된 것을하지 않는 한).

내 최후의 수단은 for 루프 인 것 같지만, 피할 수있는 방법이있을 것입니다.

감사합니다!

+0

문제는 아마도'selectCur()'에 있습니다. 이 코드는 핸들러를 모든 .thumbImg에 바인딩합니다. –

+0

맞습니다. 나는 나 자신이 좋은 구식 캐시 문제를 가지고있었습니다. – Nathan

답변

0

캐시 문제라고 생각하지 마십시오. 문맥 문제입니다. $ this를 selectCur에 전달하여 문제를 해결하십시오.

$('.thumbImg').mouseout(function(){selectCur($(this))}); 

심지어

$('.thumbImg').mouseout(selectCur); 

그런 다음 selectCur는 $ (이)를 사용할 수 있습니다; selectCur를 다른 장소에서 사용할 수 있으므로 첫 번째 솔루션이 더 좋다고 생각합니다. 필요한 경우 노드를 전달하면됩니다.

+0

첫 줄을 사용하고 있습니다. 감사! – Nathan

1

이유는 this은 의 로컬 코드이므로 selectCur() 함수가 아닙니다. 당신이 selectCur()this를 사용하려면

, 당신은 그것을 좋아 할 수 있습니다

$('.thumbImg').mouseout(selectCur);

당신이 방법을 당신의 함수를 호출하는 익명 함수/폐쇄를하고로 마우스에 그 참조입니다 . 대신이 함수를 호출하면됩니다 (호출하지 말고 여기에 ()은 없습니다). 이벤트가 발생하면 호출됩니다. 함수를 가리 키지 않아도됩니다. 그냥 가리키면 작동합니다.

관련 문제