2011-01-29 26 views
5

Tôi đang sử dụng event.preventDefault() để tránh ghép nối của # là href của một liên kết tới URL. Tôi đang chuẩn bị các sự kiện trên phần mousedown() và mouseup() của nhấp chuột, đó là lý do tại sao tôi không thể sử dụng nhấp chuột. Nhưng event.preventDefault() không ngăn cản việc ghép nối của # vào URL khi kích hoạt các phương thức mouseup() hoặc mousedown(). Làm sao để tôi có được xung quanh này?Làm thế nào tôi có thể event.preventDefault() khi sử dụng các phương thức chuột và chuột của jQuery?

Trả lời

11

Nếu bạn đang nói về việc nhấp vào liên kết, có thể do không có hành vi mặc định để ngăn chặn mousedownmouseup.

Hành vi mặc định khi nhấp vào liên kết yêu cầu kết hợp mousedown cộng với mouseup trên liên kết. Nếu bạn mousedown thì hãy kéo liên kết ra trước khi bạn mouseup, liên kết sẽ không được theo sau. Ngược lại.

Chỉ khi bạn mousedown thì mouseup mới là hành vi mặc định được kích hoạt. Sự kiện đó được đại diện bởi sự kiện click.


EDIT:Tôi đoán tôi quên trả lời câu hỏi.

Làm thế nào để bạn khám phá? Thêm một trình xử lý sự kiện click() thực hiện e.preventDefault().

$('a.myElement').click(function(e){e.preventDefault()}); 

Nếu bạn cũng muốn dừng công tác tuyên truyền về sự kiện này, và nếu bạn đang sử dụng jQuery 1.4.3 hoặc mới hơn, bạn có thể làm điều này:

$('a.myElement').bind('click',false); 

Từ các tài liệu cho bind()(docs) phương pháp:

Đặt đối số thứ ba thành sai sẽ đính kèm một chức năng ngăn chặn hành động mặc định xảy ra và ngừng sự kiện phát ra bọt.

Một lần nữa, yêu cầu jQuery 1.4.3 hoặc cao hơn.

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