Khi nào chọn chức năng mouseover () và hover ()?


112

Sự khác biệt giữa jQuery .mouseover()và các .hover()hàm là gì? Nếu chúng hoàn toàn giống nhau tại sao jQuery lại sử dụng cả hai?


4
Đây không phải là câu hỏi trùng lặp. liên kết được cung cấp của bạn có các sự kiện di chuột qua và di chuột nhưng của tôi là sự kiện di chuột qua và di chuột.
Bhojendra Rauniyar

1
chúng khác nhau trong giống như mouseover nad MouseLeave và câu trả lời được chấp nhận dưới đây là không chính xác ... chức năng di chuột thêm một mouseenter và các sự kiện mouseleve không mouseover và các sự kiện mouseout
Arun P Johny

1
thấy jsfiddle.net/arunpjohny/cZb5b/1 di chuyển con chuột từ các elyếu tố để childvà đánh dấu vào giao diện điều khiển
Arun P Johny

@ArunPJohny vui lòng đọc lại, điều đó nói rằng mouseenter và mouseleave không di chuột qua và mouseout.
Bhojendra Rauniyar

1
còn với hover - jsfiddle.net/arunpjohny/cZb5b/2 nếu bạn có thể phân tích các giao diện điều khiển, bạn có thể tìm thấy sự khác biệt ...
Arun P Johny

Câu trả lời:


113

Từ tài liệu jQuery chính thức

  • .mouseover()
    Liên kết trình xử lý sự kiện với sự kiện JavaScript "di chuột qua" hoặc kích hoạt sự kiện đó trên một phần tử.

  • .hover() Liên kết một hoặc hai trình xử lý với các phần tử phù hợp, sẽ được thực thi khi con trỏ chuột vàorời khỏi các phần tử.

    Gọi $(selector).hover(handlerIn, handlerOut)là viết tắt của: $(selector).mouseenter(handlerIn).mouseleave(handlerOut);


  • .mouseenter()

    Ràng buộc một trình xử lý sự kiện sẽ được kích hoạt khi chuột nhập một phần tử hoặc kích hoạt trình xử lý đó trên một phần tử.

    mouseoverkích hoạt khi con trỏ cũng di chuyển vào phần tử con, trong khi mouseenterchỉ kích hoạt khi con trỏ di chuyển vào phần tử bị ràng buộc.


Điều này có nghĩa là gì

Bởi vì điều này, .mouseover()không giống như .hover(), với cùng lý do .mouseover()không giống như .mouseenter().

$('selector').mouseover(over_function) // may fire multiple times

// enter and exit functions only called once per element per entry and exit
$('selector').hover(enter_function, exit_function) 

31

.hover()hàm chấp nhận hai đối số hàm, một cho mouseentersự kiện và một cho mouseleavesự kiện.


Đây là một điểm tuyệt vời về sự khác biệt giữa hai chức năng được đề cập trong tiêu đề câu hỏi, Cảm ơn! xem liên kết bên dưới trên w3schools để biết cách hoạt động của .hover (): w3schools.com/jquery/event_hover.asp
Bahman.

8

Bạn có thể dùng thử http://api.jquery.com/mouseover/ trên trang jQuery doc. Đó là một bản demo nhỏ, tương tác, làm cho nó rất rõ ràng và bạn thực sự có thể tự mình xem.

Tóm lại, bạn sẽ nhận thấy rằng sự kiện di chuột qua xảy ra trên một phần tử khi bạn đang ở trên phần tử đó - đến từ phần tử con HOẶC phần tử cha của nó, nhưng sự kiện nhập chuột chỉ xảy ra khi chuột di chuyển từ phần tử mẹ sang phần tử đó.


1

Từ tài liệu chính thức: ( http://api.jquery.com/hover/ )

Phương thức .hover () liên kết các trình xử lý cho cả sự kiện mouseenter và mouseleave. Bạn có thể sử dụng nó để đơn giản áp dụng hành vi cho một phần tử trong thời gian chuột ở trong phần tử đó.


1

Như bạn có thể đọc tại http://api.jquery.com/mouseenter/

Sự kiện JavaScript của mouseenter là độc quyền của Internet Explorer. Do tiện ích chung của sự kiện, jQuery mô phỏng sự kiện này để nó có thể được sử dụng bất kể trình duyệt nào. Sự kiện này được gửi đến một phần tử khi con trỏ chuột vào phần tử. Bất kỳ phần tử HTML nào cũng có thể nhận được sự kiện này.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.