我有一张图片表。每一行,当鼠标悬停时,会在之前隐藏的绝对定位的 div 中显示其图像。当我将鼠标悬停在现在显示的图像上时,我想取消绑定 tr mouseleave 事件以使图像不会闪烁,然后在我离开图像 div 时重新绑定 mouseleave 事件。
我能够取消绑定 mouseleave 事件,但重新绑定会导致闪烁发生。相关代码:
<table border="1" id="photoTable">
<tbody>
<tr class="item">
<td class="filename">
GraphDataCAQ3UW88.png
</td>
</tr>
</tbody>
</table>
<div id="thisPhoto"></div>
CSS:
#thisPhoto{
display:none;
position:absolute;
left:250px;
top:150px;
border: 1px solid black;
background-color:white;
padding:20px;
z-index:2;
}
js:
$(document).ready(function(){
(function($){
$.fn.getThisPhoto = function(){
return $(this).each(function(){
//I've left out the code which gets the data to pass to $.get()
$.get('administration/PhotoManagement/thisPhoto.cfm',
data,
function(response){
$('#thisPhoto').html(response).show();
}
);
});
};
})(jQuery);
$('tr.item').hover(function(){
$(this).getThisPhoto();
},
function(){
$('#thisPhoto').hide();
});
$('#thisPhoto').mouseenter(function(){
$('tr.item').unbind('mouseleave');
}).mouseleave(function(){
$('tr.item').bind('mouseleave', function(){
$('#thisPhoto').hide();
});
});
});
编辑:我通过将整个 shebang 包装在一个 div 中并在该 div 上设置 mouseout 以触发 hide() 和 bind() 函数来破解它......这不完全是我想要的,但它会在紧要关头完成。