2010-07-30 28 views
29

Tôi có kịch bản đơn giản này:tháo # từ window.location.hash

$(document).ready(function(){ 

var $yoyo = window.location.hash; 

alert($yoyo); 

}); 

Nhưng tôi cần phải thoát khỏi những ký hiệu # như tôi sẽ được sử dụng biến để xác định vị trí div id. Tôi đã thử sử dụng .remove ('#') nhưng điều đó dường như không hoạt động.

Rất cám ơn trước!

+0

http://stackoverflow.com/a/5298684/104380 – vsync

Trả lời

76
var $yoyo = window.location.hash.substring(1); 

Điều này đơn giản có nghĩa là chúng tôi đang dùng chuỗi con gồm ký tự 1 (0 được lập chỉ mục, từ thứ hai trở đi) trở đi. Xem tài liệu substring.

+4

này hoạt động càng lâu càng chuỗi thực sự bắt đầu với "#", nhưng nó có thể lập luận rằng đây là mạnh mẽ hơn và dễ đọc hơn: 'window.location.hash.replace (/^# /," ")'. –

+0

@ ChristianDavén 'window.location.hash' sẽ luôn có một băm ở phía trước hoặc trống, và' '' .substring (1) === '' ', vì vậy tôi nghĩ rằng giải pháp đó là khá mạnh mẽ. Tôi nghĩ rằng bạn là dễ đọc hơn mặc dù. (Xem thêm http://lea.verou.me/2011/05/get-your-hash-the-bulletproof-way/) –

16
var $yoyo = window.location.hash.replace("#", ""); 

.remove() là chức năng thao tác dom dom. .replace() là một hàm JavaScript gốc thay thế một chuỗi bằng một chuỗi khác bên trong một chuỗi. Từ W3Schools:

<script type="text/javascript"> 

var str="Visit Microsoft!"; 
document.write(str.replace("Microsoft", "W3Schools")); 

</script> 
+1

+1 để giải thích tại sao .remove() không hoạt động. –

+0

Tất nhiên vì đây là Stack Overflow, nó là một chức năng thao tác jQuery DOM. Nhưng trên thực tế nó có thể là bất cứ điều gì. -_- –

+0

@Vẫn, bài đăng được gắn thẻ với jQuery. Nó không thể chỉ là bất cứ điều gì;) –