2012-06-10 21 views
5

Tôi không chắc chắn cách cấu trúc như sau. Điều này hoạt động tốt:Dịch jquery này thành tập lệnh cà phê?

$('.hover li').on 'hover', (ev) -> 
    $(this).addClass('active') 

Tôi biết tôi có thể sử dụng 'toggle' thay vì 'addClass', nhưng vì các lý do khác, tôi cần một hàm xử lý. Vì vậy, tôi đã thử điều này:

$('.element').on 'hover', (ev) 
    -> $(this).addClass('active'), 
    -> $(this).removeClass('active') 

Điều này trả về lỗi - 'không mong muốn'. Tôi đã thử các biến thể khác và hầu hết các ví dụ tôi đã tìm thấy trực tuyến không sử dụng định dạng .on 'hover' (ev) ->.

Trả lời

8

Bạn không thể sử dụng on() cho điều này nếu bạn muốn đính kèm cả xử lý sự kiện tại một thời điểm.

Bạn cần phải sử dụng hover():

$('.element').hover(
    (ev) -> $(this).addClass 'active' 
    (ev) -> $(this).removeClass 'active' 
) 

hoặc thậm chí tốt hơn, sử dụng toggleClass()

$('.element').hover (ev) -> $(this).toggleClass 'active' 
+1

tôi ban đầu sử dụng toggleClass nhưng nếu tôi được quét qua yếu tố này vào tải trang, nguyên tố này sẽ bắt đầu như đang hoạt động, sau đó di chuột, chuyển sang không hoạt động, v.v. –

+0

whats 'ev' ở đây? – emaillenin

+0

@emaillenin Đối tượng sự kiện, xem http://api.jquery.com/hover/ – Niko

-4
$('.element').on 'hover', (ev) -> 
    $(this).addClass('active').removeClass('active') 

nên làm điều đó. Mặc dù tôi không hiểu. Bạn thêm lớp hoạt động và sau đó xóa nó. Tuy nhiên, mã trên là coffeescript hợp lệ ít nhất.

1

chức năng chuyển đổi của jQuery có hai chức năng, mà tôi nghĩ là những gì bạn đang sau:

$('.element').toggle 'hover', 
    (ev) -> 
     $(this).addClass('active') 
     # Do other stuff... 
    (ev) -> 
     $(this).removeClass('active') 
     # Do other stuff... 
Các vấn đề liên quan