嘗試使用疊加層上的委託將事件向上冒泡。
編輯 小提琴今天很慢,我最初發布的小提琴沒有剪掉我用過的代碼。
這是否在小提琴作品使用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