Vì liên kết JQuery Forward Mouse Event Example hiện đã chết, tôi đã viết một số mã jQuery để xử lý một trường hợp đơn giản:
- lớp phủ div có hình ảnh trong suốt và không có liên kết
- div lót với các liên kết
Mục tiêu: giữ lớp phủ hiển thị, làm cho liên kết hoạt động và thay đổi con trỏ khi trên liên kết.
Phương pháp: so sánh vị trí chuột với từng liên kết offset().
Tôi không xử lý các sự kiện chuột chung, tôi chỉ xử lý các sự kiện tôi cần đặc biệt. Vì vậy, nó thực sự là một workaround thay vì giải pháp tốt nhất, mà sẽ xử lý mọi sự kiện chuột trừu tượng, một cái gì đó giống như sử dụng WildDeepegate trên() sau khi kiểm tra hình học. Ngoài ra tôi chỉ quan tâm đến các yếu tố liên kết nhất định, không phải toàn bộ lớp DOM.
function mouse_event_over_element(evt, elem) {
var o= elem.offset();
var w= elem.width();
var h= elem.height();
return evt.pageX >= o.left && evt.pageX <= o.left + w && evt.pageY >= o.top && evt.pageY <= o.top + h;
}
$(overlay_selector).click(function(e){
$(underlay_selector + ' a').each(function() {
if (mouse_event_over_element(e, $(this))) {
// $(this).click(); // trigger a jQuery click() handler
// quickDelegate(e, this); // not in IE8
// this.click(); // maybe not in Mozilla pre-HTML5
window.location.href= this.href;
return false;
}
});
});
$(overlay_selector).mousemove(function(e){
var newcursor= 'default';
$(underlay_selector + ' a').each(function() {
if (mouse_event_over_element(e, $(this))) {
newcursor= 'pointer';
// $(this).mouseenter(); // trigger a one-argument jQuery hover() event (no mouseleave)
return false;
}
});
$(overlay_selector).css('cursor', newcursor);
});
Sử dụng chức năng hình học 'mouse_event_over_element()' bạn có thể xử lý các sự kiện và yếu tố khác.
Để làm: tìm hiểu xem sự kiện chuột nào kích hoạt chú giải công cụ trên <a title="foo">
và kích hoạt() chúng hoặc sao chép hiển thị chú giải công cụ. Tương tự cho dòng trạng thái.
..............................
Sửa 2014/09
.. ............................
tài user2273627 sggested:
Đối với các tooltip mặc định và tình trạng dòng bạn có thể sử dụng z-index css-bất động sản. Kiểm tra xem chuột có nằm trên liên kết hay không và đặt z-index cho liên kết đó. $ (this) .css ('z-index', '9'); Đặt một người khác khi chuột không vượt quá một phần tử và đặt chỉ mục z thành tự động. Đảm bảo bạn đặt vị trí liên kết cơ bản: tương đối trong tệp css, nếu không chỉ mục z sẽ không hoạt động.
này nên là câu trả lời đúng. Tôi gặp phải vấn đề này khi sử dụng SVG được phủ lên trên canvas. Không có gì, và tôi có nghĩa là không có gì khác (thư viện, CSS hoặc cách khác) có thể giải quyết điều này, và đoạn mã trên đây là điều duy nhất hoạt động hoàn hảo! Kudos Dear Sir, cảm ơn bạn! –
tôi cũng thêm && (! Event.repeat) –
Bạn sẽ áp dụng điều này như thế nào? – jmchauv