2010-09-07 31 views
6

Làm cách nào để kích hoạt chức năng nội tuyến này

onClick="showMenu('mnu_searches', event, 0, this)

bằng cách sử dụng JQuery ... nếu tôi di chuột qua a.menu-arrow? Tôi cần kích hoạt nhấp chuột sau khi người dùng đã di chuột qua phần tử trong 2 giây?Làm cách nào để kích hoạt nhấp chuột khi di chuột qua một phần tử trong 2 giây, bằng cách sử dụng JQuery?

Bất kỳ trợ giúp sẽ được đánh giá cao, Cảm ơn

Trả lời

14

Bạn có thể tạo và xóa một bộ đếm thời gian 2 giây, như thế này:

$("a.menu-arrow").hover(function() { 
    $.data(this, "timer", setTimeout($.proxy(function() { 
    $(this).click(); 
    }, this), 2000)); 
}, function() { 
    clearTimeout($.data(this, "timer")); 
}); 

You can give it a try here. Bằng cách sử dụng $.data(), chúng tôi đang lưu trữ hết thời gian chờ cho mỗi thành phần để tránh mọi sự cố và xóa bộ hẹn giờ chính xác. Phần còn lại chỉ là thiết lập một bộ đếm thời gian 2 giây khi nhập phần tử, và xóa nó khi rời khỏi. Vì vậy, nếu bạn ở lại cho 2000ms, nó bắn một .click(), nếu bạn để nó dừng rõ ràng bộ đếm thời gian.

+0

Bạn là người bạn, cảm ơn một lần nữa – Nasir

+0

Giải pháp rất thanh lịch! – jwueller

+0

hi nick, '$ (this) .click();' nó được kích hoạt như thế nào && như thế nào nó gọi trình xử lý sự kiện tương ứng của nó mà không truyền hàm xử lý sự kiện làm tham số tới '.click()'? chúng ta không thể làm điều này bằng cách sử dụng '.trigger()' ?? –

0

Bạn sẽ có thể kích hoạt trình xử lý nhấp chuột sau hai giây. Tôi đề xuất mã sau:

$(function() { 
    var timeout; 

    $('a.menu-arrow').hover(function() { 
     var self = this; 
     timeout = setTimeout(function() { 
      $(self).click(); 
      timeout = null; 
     }); 
    }, function() { 
     if (timeout) { 
      clearTimeout(timeout); 
     } 
    }); 
}); 
Các vấn đề liên quan