2011-09-27 62 views
0

我對jquery很新穎。 我使用這個jQuery代碼片段,它工作正常。但我想從網站的任何地方導航,仍然有功能的工作:如何導航到內部鏈接並執行jquery函數?

function showselectedbox(theselectedbox) { 
     $(".pageboxes").each(function (index) { 
      if ($(this).attr("id") == theselectedbox) { 
       $(this).show(200); 
      } 
      else { 
       $(this).hide(600); 

      } 
     }); 
    } 
<a id="myHeader1" href="javascript:showselectedbox('mynewboxes1');" >show this one only</a> 
<div class="pageboxes" id="mynewboxes1">Div #1</div> 
<a id="myHeader2" href="javascript:showselectedbox('mynewboxes2');" >show this one only</a> 
<div class="pageboxes" id="mynewboxes1">Div #1</div> 

...更多相同。

我還爲導航建立了一個標籤式菜單,並希望標記所選鏈接。

<div id="metaltop-teal"> 
          <ul> 
           <li class="first active"><a id="myHeader1" href="javascript:showonlyone('mynewboxes1');" >show this one only</a></li> 
           <li><a id="myHeader2" href="javascript:showonlyone('mynewboxes2');" >show this one only</a></li>... 
          </ul> 
         </div> 

是否還有另一種格式化URL的方法? e.g:<a href="url" ...>link to page</a>

感謝

回答

0

你應該把你的JavaScript在.js文件,然後在您的其他文件的文件:

<script src="yourfile.js" type="text/javascript"></script> 

現在你可以參考你的javascript函數自如。

請記住在包含jquery後包含您的.js文件,否則您的腳本將無法工作。

編輯:

要讓代碼執行後頁面加載,我會使用$(「文件」)準備就緒()這確保了直到DOM元素加載不執行代碼。這樣,您可以避免嘗試操作那些不在那裏的元素。這在使用click()等事件處理程序時尤爲重要。對於也附加到稍後創建的元素的live()和delegate(),這並不重要。

首先你做一個行:

$('document').ready(function(){

該行後,你把什麼加載頁面時執行。

要完成這個塊,你寫

});

之後,你把你的功能等,爲您的回覆@Atheist

+0

感謝。一切都設置好了,但我怎麼從page1.aspx訪問page2.aspx並應用:'if($(this).attr(「id」)== theselectedbox){ $(this).show (200); } else { $(this).hide(600); }'我怎樣才能插入這個腳本'addClass(「active」)'來標記導航中的活動標籤?謝謝 – Totem

+0

我會使用[click()](api.jquery.com/click/)或[delegate()](api.jquery.com/delegate/)設置一個eventlistener。不同的是,如果您的鏈接是在頁面加載後生成的,您將不得不使用委託,但如果它們不是使用javascript生成的,我會使用click(): – Atheist

+0

感謝您的努力來幫助我,但正如我所說的,我很新,只知道非常jQuery的術語,例如.click(),.show(),.hide()和.toggle()。我希望有人能夠幫助我重寫上面的函數,使其包含'$('document')。ready(function(){')並更改鏈接的格式,例如'' to 'page',再次感謝。 – Totem