2010-05-17 12 views
8

Tôi đang sử dụng mã sau để thêm thẻ bắt đầu bằng # vào cuối url. Bằng cách đó, ai đó có thể sao chép url đó và đưa họ trở lại trang đó, với một số div nhất định có thể hiển thị.Dừng hành vi thẻ bắt đầu bằng # mặc định bằng jquery

$("a.live").click(function() { 
    window.location.hash = 'live'; 
    $("#live).slideDown(); 
}); 

Trong ví dụ này, tôi có một liên kết được gọi là 'trực tiếp' và '#live' được thêm vào url. Sau đó, tôi có mã kiểm tra các thẻ băm khi trang được tải để hiển thị các div thích hợp.

Vấn đề của tôi là, làm cách nào để ngăn trình duyệt nhảy đến div 'sống' khi nó được gọi? Tôi không muốn trang di chuyển xuống div, chỉ muốn nó mở và hashtag nối thêm để một người có thể sao chép nó và quay lại trang đó với div hiển thị.

Bất kỳ mẹo nào?

Cảm ơn bạn!

+0

Hãy đợi, ý của bạn là khi liên kết ở trên được nhấp vào hoặc khi trang tải lên lần đầu tiên với mã băm có trong URL? – karim79

Trả lời

8

Hãy thử điều này:

$("a.live").click(function() { 
    window.location.hash = 'live'; 
    $("#live").slideDown(); 
    return false; // this will prevent default action 
}); 
8

Điều đó tùy thuộc. Nếu bạn muốn ngăn chặn nó khi nhấp vào liên kết, hãy sử dụng điều này:

$("a.live").click(function(e) { 
    e.preventDefault(); // Prevents browsers default action 
    window.location.hash = 'live'; 
    $("#live").slideDown(); 
}); 

Nếu bạn muốn ngăn nó di chuyển đến băm khi tải trang, tôi không chắc chắn cách bạn sẽ ngăn chặn điều đó.

2

Tôi giả sử bạn có một số mã trong trường hợp sẵn sàng tài liệu mà bạn sử dụng để mở div như bạn nói? Nếu vậy, tôi khuyên bạn nên thêm tiền tố vào ID trong mã băm (như #_live) để ID không được tìm thấy trong tài liệu và do đó ngăn trình duyệt tự động cuộn đến phần tử đó, sau đó sửa đổi mã của bạn để xóa tiền tố khi bạn nhặt nó lên.

Tôi đề xuất 'hack' này vì tôi không nghĩ rằng bạn có thể ngăn chặn hành vi của trình duyệt bằng JavaScript, ít nhất chắc chắn không đáng tin cậy đối với giải pháp trình duyệt chéo.