kap*_*oko 1 javascript jquery mouseleave
我想在鼠标离开两个元素时触发事件.我找到了以下jsfiddle,这正是我正在寻找的:
它使用此代码:
var count = 0;
$('#d1, #d2').mouseenter(function(){
count++;
$('#d3').show();
}).mouseleave(function(){
count--;
if (count == 0) {
$('#d3').hide();
$('#d3').css('background-color', 'orange');
}
});
?
Run Code Online (Sandbox Code Playgroud)
但是,事件仍会被触发,正如您可以看到div更改其背景颜色.
我希望只有当鼠标真正离开这两个元素时才会触发事件.
怎么样:
var count=0;
$('#d1, #d2').mouseenter(function(){
count++;
$('#d3').hide();
}).mouseleave(function(){
count--;
setTimeout(function(){
if (count==0){
$('#d3').show();
}
},50);
});
?
Run Code Online (Sandbox Code Playgroud)
小超时是为了确保鼠标实际上留下了两个元素,而不是留下一个元素而进入另一个元素.
您无法阻止事件发生,但您可以检查相关目标(您来自的元素)并检查它是否是一个或另一个.如果是,只需从事件处理程序返回.
就像是:
var checkRelated = function(e) {
var id = e.relatedTarget.id;
return id == 'd1' || id == 'd2';
}
$('#d1, #d2').mouseenter(function(e){
if (checkRelated(e)) return;
$('#d3').show();
}).mouseleave(function(e){
if (checkRelated(e)) return;
// now we know we actually left both elements
$('#d3').hide();
});
Run Code Online (Sandbox Code Playgroud)
演示:http://jsfiddle.net/pFTfm/57/
| 归档时间: |
|
| 查看次数: |
4110 次 |
| 最近记录: |