( Xem bản chỉnh sửa cuối cùng trong câu trả lời này nếu bạn cần sử dụng .on()
với các phần tử được điền bằng JavaScript )
Sử dụng phần tử này cho các phần tử không được điền bằng JavaScript:
$(".selector").on("mouseover", function () {
//stuff to do on mouseover
});
.hover()
có trình xử lý riêng: http://api.jquery.com/hover/
Nếu bạn muốn làm nhiều việc, hãy xâu chuỗi chúng trong .on()
trình xử lý như vậy:
$(".selector").on({
mouseenter: function () {
//stuff to do on mouse enter
},
mouseleave: function () {
//stuff to do on mouse leave
}
});
Theo các câu trả lời được cung cấp dưới đây, bạn có thể sử dụng hover
với .on()
, nhưng:
Mặc dù không khuyến khích mã mới, nhưng bạn có thể thấy tên giả "sự kiện" được sử dụng làm tốc ký cho chuỗi "mouseenter mouseleave". Nó đính kèm một trình xử lý sự kiện duy nhất cho hai sự kiện đó và trình xử lý phải kiểm tra event.type để xác định xem sự kiện đó là mouseenter hay mouseleave. Đừng nhầm lẫn tên giả "di chuột" với phương thức .hover (), chấp nhận một hoặc hai hàm.
Ngoài ra, không có lợi thế về hiệu suất khi sử dụng và nó cồng kềnh hơn so với chỉ sử dụng mouseenter
hoặc mouseleave
. Câu trả lời tôi cung cấp yêu cầu ít mã hơn và là cách thích hợp để đạt được thứ gì đó như thế này.
BIÊN TẬP
Đã được một thời gian kể từ khi câu hỏi này được trả lời và dường như nó đã đạt được một lực kéo. Đoạn mã trên vẫn đứng vững, nhưng tôi đã muốn thêm một cái gì đó vào câu trả lời ban đầu của mình.
Mặc dù tôi thích sử dụng mouseenter
và mouseleave
(giúp tôi hiểu những gì đang diễn ra trong mã) với .on()
nó cũng giống như viết như sau vớihover()
$(".selector").hover(function () {
//stuff to do on mouse enter
},
function () {
//stuff to do on mouse leave
});
Kể từ khi câu hỏi ban đầu đã hỏi làm thế nào họ có thể sử dụng đúng cách on()
với hover()
, tôi nghĩ tôi sẽ khắc phục sử dụng on()
và không thấy cần phải thêm hover()
mã tại thời điểm đó.
EDIT ngày 11 tháng 12 năm 2012
Một số câu trả lời mới được cung cấp dưới đây chi tiết cách .on()
hoạt động nếu div
câu hỏi được điền bằng JavaScript. Ví dụ: giả sử bạn điền vào một sự kiện div
bằng jQuery .load()
, như vậy:
(function ($) {
//append div to document body
$('<div class="selector">Test</div>').appendTo(document.body);
}(jQuery));
Các mã trên .on()
sẽ không đứng. Thay vào đó, bạn nên sửa đổi mã của mình một chút, như thế này:
$(document).on({
mouseenter: function () {
//stuff to do on mouse enter
},
mouseleave: function () {
//stuff to do on mouse leave
}
}, ".selector"); //pass the element as an argument to .on
Mã này sẽ hoạt động cho một phần tử được điền bằng JavaScript sau khi một .load()
sự kiện đã xảy ra. Chỉ cần thay đổi đối số của bạn để chọn phù hợp.
mouseenter
vàmouseleave
, theo đề xuất của calebthebrewer.