尝试使用叠加层上的委托将事件向上冒泡。
编辑 小提琴今天很慢,我最初发布的小提琴没有剪掉我用过的代码。
这是否在小提琴作品使用jQuery版本(1.8.2)中选择 链接jsBIN叉:http://jsbin.com/ugeniq/3/edit
EDIT 2 我才意识到鼠标/过/出不股利没工作。我已经更新了代码,所以现在可以使用和不使用div覆盖。
var fail = true;
var button = document.getElementById("button");
var overlay = document.getElementById("overlay");
var log = document.getElementById("log");
button.addEventListener('click', function() {
if (fail) {
// mouseout won't be fired until you move the mouse
window.setTimeout(function() {
overlay.style.display = 'block';
}, 0);
} else {
// mouseout event is fired instantly
overlay.style.display = 'block';
}
log.innerHTML += 'over' + "<br>";
}, false);
button.addEventListener('mouseover', function() {
log.innerHTML += 'over' + "<br>";
}, false);
button.addEventListener('mouseout', function() {
log.innerHTML += 'out' + "<br>";
}, false);
$(overlay).delegate(button, 'mouseover', function() {
log.innerHTML += 'over' + "<br>";
});
$(overlay).delegate(button, 'mouseout', function() {
log.innerHTML += 'out' + "<br>";
});
这似乎是一个mouseout实现的角落bug .. – Nelson