2010-11-26 4 views
6

호버()에 변수를 전달할 수 있습니까?jquery : hover() 함수에서 변수를 전달 하시겠습니까?

아래 스크립트에서 동일한 변수를 두 번 선언하고 싶지 않습니다. var target = xxx이 변수를 전역 변수로 지정하고 싶지 않습니다. target = xxx bcos이 변수 이름 - 대상을 사용하는 다른 함수가 있습니다.

$('.image-profile').hover(function() { 

     var target = $('.button-change-image-profile',this); 
     target.show(); 

    },function() { 

     //var target = $('.button-change-image-profile',this); 
     target.hide(); 

    }); 

그래서 나는 그것이 잘못 물론,이 },function (target) { 같은 VAR을 통과했지만, 다른 방법이 VAR를 통과?

감사합니다. 이와 같이, (예를 들어 .each() 사용)을 반복 할 때

$('.image-profile').hover(function() { 
    $('.button-change-image-profile',this).toggle(); 
}); 

는 (보다 일반적으로 용액) 각 핸들러가 가능한 바깥을 정의 :

+0

함수의 이벤트 유형에 인수를 전달하는 용도는 무엇입니까? 이제까지 원하는 것은 이벤트 나 this를 통해 사용할 수 있습니다 ... – kobe

답변

6

짧은 버전 여기 토글된다

$('.image-profile').each(function() { 
    var target = $('.button-change-image-profile',this); 
    $(this).hover(function() { 
     target.show(); 
    },function() { 
     target.hide(); 
    }); 
}); 
+0

고마워요! 왜 내가 그걸 생각하지 않았습니까? " 도움을 주셔서 감사합니다 :-) – laukok

+0

일반적인 답변 주셔서 감사합니다! 도와 줬어. – Jeff

1

그냥 hover 기능의 var out을 정의하십시오.

+0

은 함수에서 정의 된 모든 변수가 일종의 전역 변수입니다. – slobodan

+3

누가 그 말을했는지는 모르겠지만 그게 정확하지 않습니다. –

+0

이것은 많은 ".image-profile"요소가 있기 때문에 문제를 "해결"하는 매우 나쁜 방법이며 실제로 여기에서 문제를 일으킬 것입니다. –

1

jQuery bind이 원하는 것일 수 있습니다.

7

또 다른 가능한 접근 방법은 jQuery .data()을 사용하여 호버 인/아웃의 this에 데이터를 저장하는 것입니다. 마우스로 저장하면 마우스로 검색 할 수 있습니다. 이 글로벌 VAR 또는 호버 기능의 아웃 VAR를 사용하는 것이 개념적으로 유사 할 수있다, 따라서, t는 ...

희망
$('.image-profile').hover(function() { 

    var target = $('.button-change-image-profile',this); 
    target.show(); 

    // we save the target object into the 'target' key. 
    $(this).data('target',target); 

},function() { 

    // we retrieve the target object (a jQuery object) and then hide it. 
    $(this).data('target').hide(); 

}); 

는이 방법이 너무 잘못되지 않습니다 ... 일부 쓰레기를 만들 수 있습니다
+0

이 문제가 해결되었습니다. 감사합니다. – Saturnix

+0

나를 위해 일했다 :) – Heihachi