2010-01-18 35 views
21

Tôi tạo ra một hàm trong javascript mà tôi thêm vào một neo như vậyjavascript neo tránh cuộn đầu vào nhấp chuột

javascript:

somefunction = function() {alert('foo')} 

html:

<a href="#" onclick="return somefunction()">anchor</a> 

mọi i nhấp trên neo chức năng thực hiện nhưng màn hình cuộn đến đầu

Tôi biết tôi có thể thực hiện việc này

<a href="javascript:void(0)" onclick="return somefunction()">anchor</a> 

nhưng tôi đã thấy các tùy chọn đầu tiên thực hiện mà không miệt vườn này lên các di chuyển lên

có bất kỳ mẹo để thực hiện?

cảm ơn bạn

Trả lời

46

Onclick khiến trang gửi lại, do đó cuộn lên trên cùng.

Bạn cần sự kiện onclick để trả về giá trị sai để tránh bị đăng lại.

Điều này có thể được thực hiện bằng cách thay đổi chức năng của bạn để trả lại một sai:

somefunction = function() {alert('foo'); return false;} 

Hoặc để sửa lại liên kết và sự kiện onClick để làm như vậy:

<a href="javascript:void(0)" onclick="somefunction(); return false;">anchor</a> 
2

Return false từ handler onclick của bạn, ví dụ:

<a href="#" onclick="somefunction(); return false;">anchor</a> 
2

Bạn cần thực hiện somefunction() trả lại false hoặc bạn cần thêm rõ ràng return false vào trình xử lý onclick của mình. Ví dụ:

<a href="#" onclick="somefunction(); return false;">anchor</a> 

Điều này sẽ khiến trình duyệt bỏ qua phần href của liên kết khi ai đó nhấp vào liên kết.

4

Bí quyết là onclick của bạn trả về giá trị somefunction, vì vậy nếu bạn đảm bảo somefunction luôn là return false, thì sự kiện cũng sẽ trả về false và hủy hành vi mặc định của neo.

Vì vậy, điều này sẽ giải quyết vấn đề của bạn:

somefunction = function() { alert('foo'); return false; } 

Nhưng tôi nên đề cập đến rằng khi có một lỗi ở đâu đó trong somefunction, phần còn lại của javascript sẽ không thực hiện, và trình duyệt vẫn sẽ làm theo các liên kết đến #. Do đó, nên sử dụng javascript:void(0), vì điều này sẽ giúp bạn giải quyết vấn đề đó.

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