its*_*sme 3 javascript jquery mouseover jquery-plugins mouseevent
有没有办法检测鼠标指针停留在html元素上的秒数?
我想检索鼠标停留在元素上的秒数,以便在回调事件上稍微延迟...如果可能的话:)
我正在尝试通过计数器进行简单的for()循环检测:
var time_over ;
$('.bean-active').live('mouseover',function(){
id_tag = $(this).attr("id");
for(time_over = 1;time_over <= 3000;time_over ++){
if(time_over == 3000){
$('.bean-bubble,.bean-bubble img').hide();
$('#bean-bubble-'+id_tag+',#bean-bubble-'+id_tag+' img').show();
}
}
});
Run Code Online (Sandbox Code Playgroud)
问题是它不起作用:(
另外我想绑定一个mouseleave事件,脚本逻辑应该是:
while ( mouseover element count how many time it stays over)
if (time == n)
{ do somenthing }
if (mouseleave from element earlier then time)
{ do somenthing different }
Run Code Online (Sandbox Code Playgroud)
鉴于此标记:
<div id="hoverOverMe">Hover over me</div>
<div id="output"></div>
Run Code Online (Sandbox Code Playgroud)
像这个插件这样的东西可以做到这一点:
(function($) {
$.fn.delayedAction = function(options)
{
var settings = $.extend(
{},
{
delayedAction : function(){},
cancelledAction: function(){},
hoverTime: 1000
},
options);
return this.each(function(){
var $this = $(this);
$this.hover(function(){
$this.data('timerId',
setTimeout(function(){
$this.data('hover',false);
settings.delayedAction($this);
},settings.hoverTime));
$this.data('hover',true);
},
function(){
if($this.data('hover')){
clearTimeout($this.data('timerId'));
settings.cancelledAction($this);
}
$this.data('hover',false);
} );
});
}
})(jQuery);
Run Code Online (Sandbox Code Playgroud)
和调用代码:
$('#hoverOverMe').delayedAction (
{
delayedAction: function($element){
$('#output').html($element.attr('id') + ' was hovered for 3 seconds');
},
cancelledAction: function($element){
$('#output').html($element.attr('id') + ' was hovered for less than 3 seconds');
},
hoverTime: 3000 // 3 seconds
}
);
Run Code Online (Sandbox Code Playgroud)
根据您的要求,这样的东西就足够了:
$('.bean-active').delayedAction(
{
delayedAction: function($element){
id_tag = $element.attr("id");
$('.bean-bubble,.bean-bubble img').hide();
$('#bean-bubble-'+id_tag+',#bean-bubble-'+id_tag+' img').show();
},
hoverTime: 3000
});
Run Code Online (Sandbox Code Playgroud)