2011-10-24 29 views
5

Tôi muốn thực hiện menu điều hướng mờ dần màu bằng cách sử dụng jQuery, trong đó nút "được nhấn" tương ứng với trang hiện tại hoạt động khác với nút "chưa được nhấn" (cụ thể là nó không ' t phai sang màu khác khi lơ lửng). Nếu tôi xem ví dụ tại www.guitaracademy.nl, tôi thấy rằng họ sử dụng javascript gốc với thuộc tính window.location.hash.Sử dụng window.location.hash trong jQuery

Tuy nhiên, tôi dường như không nhận được băm này vào jQuery. Dưới đây là một tập lệnh mẫu:

<html> 
<head> 
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js"></script> 
<script type="text/javascript"> 
$(function(){ 
    var p=window.location.hash; 
    $("#clickme").click(function(){ 
     alert(p) 
    }); 
}); 
</script> 
</head> 
<body> 
<a href="#test">Click me first</a> 
<div id="clickme">Then click me</div> 
</body> 
</html> 

Sau khi tải trang này, tôi nhấp vào liên kết "Nhấp vào tôi trước"; sau đó trong thanh địa chỉ, tôi thấy "#test" được thêm vào URL gốc. Tuy nhiên, nếu sau đó tôi nhấp vào "Sau đó nhấp vào tôi" div tôi thấy một cảnh báo trống. Có vẻ như băm không 'cập nhật'.

Tôi rất biết ơn mọi sự trợ giúp về vấn đề này.

Trả lời

5

Thử di chuyển lệnh gọi hàm băm vào bên trong hàm để nó được gọi mỗi lần nhấp được gọi. Cách bạn đã có nó, nó chỉ tải trên tải ban đầu của trang.

$(function(){ 
    $("#clickme").click(function(){ 
     var p=window.location.hash; 
     alert(p) 
    }); 
}); 
+0

Xin chào, vâng, đã làm việc, cảm ơn tất cả các bạn đã trả lời (hội tụ) của bạn! –

0

Chức năng của bạn cho số #clickme div không bao giờ cố gắng cập nhật băm. Nếu bạn đang mong đợi mã của bạn để cập nhật các hash bạn sẽ phải vận dụng nó như:

$("#clickme").click(function(){ 
    window.location.hash='#secondclick'; 

    //Remaining Code 
}); 
1

Hãy thử đặt var p=window.location.hash; bên bạn nhấp nghe:

<script type="text/javascript"> 
    $(function(){ 
     $("#clickme").click(function(){ 
      var p=window.location.hash; 
      alert(p) 
     }); 
    }); 
</script> 
0

Các băm là nhận upadated nhưng trong này trường hợp biến 'p' không được cập nhật.

Ở đây câu lệnh gán

var p=window.location.hash; 

được thực hiện một lần duy nhất khi trang được tải. Vì vậy, tại thời điểm tải giá trị của P là trống rỗng, và luôn luôn nó sẽ được sản phẩm nào.

Thay vì

alert(p) 

thử

alert(window.location.hash) 

hoặc di chuyển nhượng bên trong gọi lại nhấp chuột. tức là ngay trên tuyên bố cảnh báo