jQuery
특별 이벤트 hoverintent
을 mouseleave
함수와 함께 사용하는 데 문제가 있습니다. 는 mouseleave
이벤트 만 발사 될 수 있도록 사용자의 마우스 감도 임계 값 아래 둔화 때 나는 같은 기능을 활용할 필요가jQuery 특별 이벤트 호버 넌트가`mouseleave` 함수와 함께 제대로 작동하지 않습니다.
(나는 또한 mouseleave
에 대한 mouseout
를 대체하려고했습니다).
나는 스크립트 아래에 포함했다, 또한 그것은이에 포함을 위해 특별히 설계 되었기 때문에 jQuery의 hoverintent 특별 이벤트 코드가 여기에 작동하지 않습니다 밝혀 http://click2fit.com/test_files/accordion_hoverintent.html
$(function() {
$(".accordion_close_leave").accordion({
event: "click hoverintent",
collapsible: true,
active: false,
autoHeight: false,
}).mouseleave(function() {
$(this).accordion({ active: false});
});
var cfg = ($.hoverintent = {
sensitivity: 100,
interval: 500
});
$.event.special.hoverintent = {
setup: function() {
$(this).bind("mouseover", jQuery.event.special.hoverintent.handler);
},
teardown: function() {
$(this).unbind("mouseover", jQuery.event.special.hoverintent.handler);
},
handler: function(event) {
var that = this,
args = arguments,
target = $(event.target),
cX, cY, pX, pY;
function track(event) {
cX = event.pageX;
cY = event.pageY;
};
pX = event.pageX;
pY = event.pageY;
function clear() {
target
.unbind("mousemove", track)
.unbind("mouseout", arguments.callee);
clearTimeout(timeout);
}
function handler() {
if ((Math.abs(pX - cX) + Math.abs(pY - cY)) < cfg.sensitivity) {
clear();
event.type = "hoverintent";
event.originalEvent = {};
jQuery.event.handle.apply(that, args);
} else {
pX = cX;
pY = cY;
timeout = setTimeout(handler, cfg.interval);
}
}
var timeout = setTimeout(handler, cfg.interval);
target.mousemove(track).mouseout(clear);
return true;
}
};