2011-05-25 46 views
1

我有一個http://example.com/app韋伯應用程序,我想顯示一種形式,如果用戶正在訪問http://example/app#add-item如何在用戶使用JQuery訪問哈希鏈接(#something)時運行JavaScript函數?

有什麼辦法,我可以使用jQuery腳本添加此functionallity?

我現在的jQuery腳本已經有這樣的結構:

$(document).ready(
    function() { 
     $('#search').keyup(
      function() { ... } 
     ); 
    } 
) 

我如何能顯示一種形式使用成才這樣的:

$(document).ready(
    function() { 
     $('#search').keyup(
      function() { ... } 
     ); 

     $('#add-item').visit(// .visit probably doesn't exist 
      function() { content.innerHTML = myForm; } 
     ); 
    } 
) 

回答

3

這是我做的事情:

var hash = (window.location.hash).replace('#', ''); 
    if (hash.length == 0) { 
     //no hash 
    } 
    else { 
     //use `hash` 
     //example: 
     if(hash == 'add-item'){ 
      //do something 
     } 
    } 
+1

+1 - 只是一個小挑逗;我會'如果(散列){//因爲空字符串== falsy}'保存有價值的字節。 – karim79 2011-05-25 16:38:31

+0

@ karim79,不'hash.length'需要相同的時間?它也佔了,如果網址是:'example.com /#' – Neal 2011-05-25 16:39:34

+0

這不是性能而是更小的足跡(但同樣,只是挑剔:)既然你什麼也沒有更換哈希字符時,您評論中的示例網址仍應產生虛假結果。 – karim79 2011-05-25 16:40:35

0
$(document).ready(
    function() { 
     $('#search').keyup(
      function() { ... } 
     ); 

     $('#add-item').click(
      function() { $("#content").html(myForm); } 
     ); 
    } 
); 

我假設你有一個id爲「content」的元素,你要顯示這個表單。

+0

但如果用戶點擊,這是唯一的工作一個'#附加item'鏈接上,而不是如果用戶訪問該URL,還是我錯了? – Jonas 2011-05-25 16:40:17

+0

是的,如果是這種情況,你需要檢查頁面的onload事件的散列。哪些已經回答。 – ssapkota 2011-05-25 16:43:20