2011-09-08 10 views
49

Khi sử dụng Google, tôi nhận thấy rằng họ đang sử dụng các sự kiện onclick trong các thẻ liên kết.Thẻ liên kết HTML có sự kiện onclick trên Javascript

Trong các tùy chọn nhiều hơn trong phần tiêu đề của Google, có vẻ như thẻ bình thường, nhưng onclicking nó không được chuyển hướng nhưng mở một menu. Thông thường khi sử dụng

<a href='more.php' onclick='show_more_menu()'>More >>></a> 

Nó thường đi vào 'more.php' mà không bắn show_more_menu(), nhưng tôi có hiển thị một menu trong trang đó chính nó. Cách thực hiện như google?

Trả lời

76

Nếu chức năng onclick của bạn trả về false, hành vi trình duyệt mặc định sẽ bị hủy. Như vậy:

<a href='http://www.google.com' onclick='return check()'>check</a> 

<script type='text/javascript'> 

function check() 
{ 
    return false; 
} 

</script> 

Dù bằng cách nào, liệu google có hay không không quan trọng lắm. Nó sạch hơn để ràng buộc các chức năng onclick của bạn trong javascript - bằng cách này bạn tách HTML của bạn khỏi mã khác.

+2

1. Để chắc chắn hơn, sử dụng một trong # href = "#" và làm những điều cần thiết trong javascript. Bạn có thể nhấp vào liên kết đó với # href; trang sẽ rời khỏi/tải lại url. –

32

Từ những gì tôi hiểu bạn không muốn chuyển hướng khi liên kết được nhấp. Bạn có thể làm:

<a href='javascript:;' onclick='show_more_menu();'>More ></a> 
+0

Điều này hữu ích khi bạn không muốn href trỏ đến bất cứ đâu. – kbpontius

+0

Thật tuyệt và nó hoạt động nhưng jquery ném một lỗi "Lỗi: Lỗi cú pháp, biểu thức không được công nhận: javascript :;" – TheOddCoder

40

Bạn thậm chí có thể thử dưới đây tùy chọn:

<a href="javascript:show_more_menu();">More >>></a> 
+0

Cảnh báo: Nếu hàm trả về bất kỳ giá trị rõ ràng nào (ví dụ: 'return null;', nhưng không phải 'return;'), điều này sẽ có hậu quả không mong muốn trong một số trình duyệt, chẳng hạn như FireFox. Trang sẽ có tất cả nội dung được thay thế bằng giá trị trả lại ở định dạng chuỗi (ví dụ: '[object Object]'). – rannmann

+0

Cung cấp cho tôi một lỗi 'Hàm không được xác định'. –