2010-10-19 42 views
13

Có một giải pháp JavaScript hoặc jQuery để chạy một hàm lặp lại (sau setTimeout) trong khi chuột trên đối tượng DOM không? Nói cách khác, có JavaScript "làm khi di chuột qua" (hoặc "nếu di chuột qua") không?Một "nếu di chuột qua" hoặc "làm khi di chuột qua" trong JavaScript/jQuery

$('someObject').bind('mouseover', function() { 

     //Do the following while mouseover 
     $('someOtherObject').css('margin-left',adjustedLeft + 'px'); 
     setTimeout(/*do it again*/,25); 

    }); 

Trả lời

38
$('someObject').on('mouseenter', function() { 
    this.iid = setInterval(function() { 
     // do something   
    }, 25); 
}).on('mouseleave', function(){ 
    this.iid && clearInterval(this.iid); 
}); 

Example Look here

+0

+1, đang cố gắng viết giải thích cho điều này .. –

+0

+1 Rõ ràng và đơn giản. – jensgram

+0

Oh thật tuyệt !! Ví dụ tuyệt vời quá! – Kyle

0

Tôi sẽ giải quyết vấn đề này bằng sự kiện onmouseout. Bắt đầu bất cứ điều gì bạn định làm khi chuột vượt qua thành phần được chỉ định trên sự kiện di chuột qua. Khi sự kiện onmouseout xảy ra, tôi sẽ dừng lại.

0

tôi sử dụng phong cách ràng buộc mới của jQuery.

 
$(el).bind({ 
'mouseenter': function(){console.log('Mouse over');}, 
'mouseleave': function(){console.log('Mouse leave');} 
}); 
0

Tôi biết đây là loại cũ, nhưng tôi nghĩ rằng các chức năng phù hợp là đã có trong JavaScript, onmousemove hiện điều đó.

Các vấn đề liên quan