답변:
jQuery 1.4.1은 이제 live () 이벤트에 대해 "호버"를 지원하지만 하나의 이벤트 핸들러 함수 만 사용합니다.
$("table tr").live("hover",
function () {
});
또는 mouseenter 용과 mouseleave 용의 두 가지 기능을 제공 할 수 있습니다.
$("table tr").live({
mouseenter: function () {
},
mouseleave: function () {
}
});
live
: api.jquery.com/live
.live
문서 페이지 가 사용 말한다 .on
대신. "jQuery 1.7부터 .live () 메소드는 더 이상 사용되지 않습니다. .on ()을 사용하여 이벤트 핸들러를 첨부하십시오."
$('.hoverme').live('mouseover mouseout', function(event) {
if (event.type == 'mouseover') {
// do something on mouseover
} else {
// do something on mouseout
}
});
.live
더 이상 사용되지 않습니다. 지금 교체 방법에 대한 Andre의 답변을 참조하십시오.
mouseover
및 mouseout
이벤트를 사용 하면 사용자가 요소 내부에서 마우스를 움직일 때 코드가 계속 실행됩니다. 내 생각 mouseenter
과 mouseleave
는 항목에 만 불 한 번 것이기 때문에 더 적합합니다.
.live()
jQuery 1.7부터 사용되지 않습니다.
.on()
대신 사용하고 자손 선택기를 지정 하십시오.
$("table").on({
mouseenter: function(){
$(this).addClass("inside");
},
mouseleave: function(){
$(this).removeClass("inside");
}
}, "tr"); // descendant selector
이 코드는 작동합니다 :
$(".ui-button-text").live(
'hover',
function (ev) {
if (ev.type == 'mouseover') {
$(this).addClass("ui-state-hover");
}
if (ev.type == 'mouseout') {
$(this).removeClass("ui-state-hover");
}
});
경고 : 호버의 라이브 버전에서는 성능이 크게 저하됩니다. IE8의 큰 페이지에서 특히 눈에.니다.
AJAX와 함께 여러 수준의 메뉴를로드하는 프로젝트를 진행하고 있습니다 (이유에는 이유가 있습니다). 어쨌든, 나는 크롬에서 잘 작동하는 호버에 라이브 방법을 사용했습니다 (IE9는 괜찮 았지만 훌륭하지는 않았습니다). 그러나 IE8에서는 메뉴가 느려졌을뿐만 아니라 메뉴가 떨어지기 전에 몇 초 동안 마우스를 가져 가야했지만 스크롤 및 간단한 확인란 확인을 포함하여 페이지의 모든 것이 느려졌습니다.
로드 된 이벤트를 직접 바인딩하면 적절한 성능이 얻어졌습니다.