2013-07-11 83 views
89

Sự khác nhau giữa jquery .mouseover().hover() là gì? Nếu họ hoàn toàn giống nhau tại sao jQuery sử dụng cả hai?khi chọn chức năng di chuột() và di chuột()

+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 mouseover và mouseenter nhưng sự kiện của tôi là di chuột qua và di chuột. –

+1

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

+1

xem http://jsfiddle.net/arunpjohny/cZb5b/ 1/di chuyển chuột từ phần tử 'el' sang' con' và kiểm tra bảng điều khiển –

Trả lời

87

Từ các tài liệu

.mouseover(): source

Bind một event handler cho "mouseover" JavaScript sự kiện, hoặc kích hoạt sự kiện đó trên một phần tử.

.hover(): source

Bind một hoặc hai bộ xử lý với các yếu tố phù hợp, được thực hiện khi con trỏ chuột vào các yếu tố.

Calling $(selector).hover(handlerIn, handlerOut) là viết tắt cho: $(selector).mouseenter(handlerIn).mouseleave(handlerOut);

.mouseenter(): source

Bind một event handler được kích hoạt khi chuột vào một phần tử, hoặc kích hoạt handler mà trên một phần tử.

mouseover kích hoạt khi con trỏ di chuyển vào phần tử con, trong khi mouseenter chỉ kích hoạt khi con trỏ di chuyển vào phần tử được liên kết.

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

Bởi vì điều này, .mouseover()không giống như .hover(), cho cùng một 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) 
26

.hover() chức năng chấp nhận hai đối số hàm, một cho sự kiện mouseenter và một cho sự kiện mouseleave.

1

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

Phương pháp .hover() liên kết với bộ xử lý cho cả mouseenter và các sự kiện MouseLeave. Bạn có thể sử dụng nó để chỉ áp dụng hành vi cho một phần tử trong khi chuột nằm trong phần tử.

1

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

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

6

Bạn có thể dùng thử http://api.jquery.com/mouseover/ trên trang tài liệu jQuery. Đó là một bản trình diễn tương tác nhỏ, đẹp, làm cho nó rất rõ ràng và bạn có thể thực sự thấy cho chính mình.Tóm lại, bạn sẽ nhận thấy rằng một sự kiện chuột xuất hiện trên một phần tử khi bạn vượt qua nó - đến từ phần tử con hoặc phần tử con của nó, nhưng một sự kiện nhập chuột chỉ xảy ra khi con chuột di chuyển từ phần tử gốc cho phần tử.

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