我有一个名为 onmouseover
的例程。我希望有一个轻微的延迟 - 即在效果发生之前给用户时间 mouseout
。该效果使用 event.clientX
值。然而,在调用回调时(500 毫秒后),event
对象似乎已不存在。我怎样才能巧妙地保持 event.clientX
的状态?
function showTip(sDivID){
SHOW_TIP_TIMEOUT_ID = setTimeout(function(){
var div = $('#'+sDivID).show()[0];
div.style.left = event.clientX;
} ,500)
}
最佳答案
如果您依赖于此仅在 Internet Explorer 中工作,您可以在设置超时之前保存该值:
function showTip(sDivID) {
var x = event.clientX;
SHOW_TIP_TIMEOUT_ID = setTimeout(function() {
var div = $('#' + sDivId).show()[0];
div.style.left = x;
}, 500);
}
如果您希望它适用于其他浏览器,您必须在事件处理程序本身中获取事件并将其传递或将其存储在全局 (ick) 中。由于您使用的是 jQuery,它已经为您完成了所有浏览器规范化工作,因此您应该利用它。
关于javascript - 在 setTimeout 回调函数中保留 event.clientX 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6203766/