[javascript] jQuery에서 “hover”바인딩을 해제하려면 어떻게합니까?
jQuery에서 “hover”를 어떻게 해제합니까?
작동하지 않습니다.
$(this).unbind('hover');
답변
$(this).unbind('mouseenter').unbind('mouseleave')
또는 더 간결하게 ( @Chad Grant에게 감사드립니다 ) :
$(this).unbind('mouseenter mouseleave')
답변
실제로 jQuery 문서 는 위에 표시된 연결 예제보다 더 간단한 접근 방식을 가지고 있습니다 (물론 잘 작동하지만).
$("#myElement").unbind('mouseenter mouseleave');
jQuery 1.7부터 $.on()
및 $.off()
이벤트 바인딩 에도 사용할 수 있으므로 hover 이벤트의 바인딩을 해제하려면 더 간단하고 깔끔한 방법을 사용합니다.
$('#myElement').off('hover');
의사 이벤트 이름 “hover” 는 “mouseenter mouseleave” 의 약어로 사용 되지만 이전 jQuery 버전에서는 다르게 처리되었습니다. 각 리터럴 이벤트 이름을 명시 적으로 제거해야합니다. 사용$.off()
지금은 같은 속기를 사용하여 두 마우스 이벤트를 제거 할 수 있습니다.
2016 년 수정 :
여전히 인기있는 질문이므로 jQuery 1.9+에서 “hover”이벤트가 표준 “mouseenter mouseleave”호출에 찬성하여 더 이상 사용되지 않는다는 아래 주석의 @ Dennis98 의 요점에 주목할 가치 가 있습니다. 따라서 이벤트 바인딩 선언은 다음과 같아야합니다.
$('#myElement').off('mouseenter mouseleave');
답변
바인딩 해제 mouseenter
및 mouseleave
요소 (들)에 이벤트가 개별적으로 또는 바인딩 해제 모든 이벤트.
$(this).unbind('mouseenter').unbind('mouseleave');
또는
$(this).unbind(); // assuming you have no other handlers you want to keep
답변
unbind ()는 하드 코딩 된 인라인 이벤트에서 작동하지 않습니다.
예를 들어에서 mouseover 이벤트를 바인딩 해제하려는 경우
이를 달성하는 빠르고 더러운 방법 <div id="some_div" onmouseover="do_something();">
이라는 것을 알았 $('#some_div').attr('onmouseover','')
습니다.
답변
또 다른 해결책은 .die ()를 부착하는 것이 이벤트를 .live () .
전의.:
// attach click event for <a> tags
$('a').live('click', function(){});
// deattach click event from <a> tags
$('a').die('click');
여기에서 좋은 참고 문헌을 찾을 수 있습니다 : jQuery .live () 및 .die () 탐색
(내 영어 죄송합니다 : “>)
답변
모든 hover는이면에서 수행되는 작업은 mouseover 및 mouseout 속성에 바인딩됩니다. 해당 이벤트에서 개별적으로 기능을 바인딩 및 바인딩 해제합니다.
예를 들어 다음 html이 있다고 가정합니다.
<a href="#" class="myLink">Link</a>
그러면 jQuery는 다음과 같습니다.
$(document).ready(function() {
function mouseOver()
{
$(this).css('color', 'red');
}
function mouseOut()
{
$(this).css('color', 'blue');
}
// either of these might work
$('.myLink').hover(mouseOver, mouseOut);
$('.myLink').mouseover(mouseOver).mouseout(mouseOut);
// otherwise use this
$('.myLink').bind('mouseover', mouseOver).bind('mouseout', mouseOut);
// then to unbind
$('.myLink').click(function(e) {
e.preventDefault();
$('.myLink').unbind('mouseover', mouseOver).unbind('mouseout', mouseOut);
});
});
답변
다음을 on
사용하여 에 의해 첨부 된 특정 이벤트 핸들러를 제거 할 수 있습니다.off
$("#ID").on ("eventName", additionalCss, handlerFunction);
// to remove the specific handler
$("#ID").off ("eventName", additionalCss, handlerFunction);
이를 사용하면 handlerFunction 만 제거됩니다.
또 다른 좋은 방법은 여러 연결된 이벤트에 대한 네임 스페이스를 설정하는 것입니다.
$("#ID").on ("eventName1.nameSpace", additionalCss, handlerFunction1);
$("#ID").on ("eventName2.nameSpace", additionalCss, handlerFunction2);
// ...
$("#ID").on ("eventNameN.nameSpace", additionalCss, handlerFunctionN);
// and to remove handlerFunction from 1 to N, just use this
$("#ID").off(".nameSpace");