2012-01-28 214 views
3

我正在將信息傳遞給返回頁面的服務器,但每次重新加載頁面時都必須重新定義點擊偵聽器,因爲jQuery控制着每個頁面上的所有點擊,所以我是想知道有沒有辦法永久定義一個函數?有沒有辦法在jQuery中永久定義一個函數?

jQuery代碼:

$(function(){ 
    $('.lvl1Links').on('click',function(event) { 
     event.preventDefault(); 
     $('pload').html('<img src="source/image/lbl.gif">'); 
     var page = $(this).attr('id'); 
     var huh = $('input:hidden').val(); 
     var data = 'pop='+huh+'&page='+page; 
     $.post('source/php/bots/authorize.php',data,function(data){ 
       $('#pager_master_div').html(data).slideDown(); 
       $('pload').html(''); 
      }); 
    }); 
}); 
+1

由於頁面不是永久性的,您不能永久定義內容。您在每個頁面上的所有鏈接都會做不同的事情,因此您必須告訴瀏覽器爲每個單獨的鏈接執行什麼操作。 – DaveRandom 2012-01-28 01:17:27

回答

1

作爲一個無狀態的平臺,每一個頁面加載,你需要重新綁定這樣的事情的時間。下面是我使用它更容易的模式:

如果這在您的站點的某個區域中很常見,請將這種類型的內容放入公用文件中的init函數中。例如

global.js:

function InitSalesPageOrWhatever(){ 
    $(function(){ foo; }); 
    OtherStuffThatRunsOnEverySalesPageLoad(); 
} 

然後在腳本塊在您的網頁,例如SalesPage:

InitSalesPageOrWhatever(); 

就是這樣 - 只是您的內容頁面中有一行。除了內容頁面的好處和乾淨之外,現在可以通過用戶的瀏覽器緩存大量的JS,從而減輕對用戶的負擔,並加快他們的體驗。

1

jQuery(和所有Javascript)運行在永久性不可用的客戶端。有兩種方法可以解決您尋求的永久性問題。

  1. 編寫一個jQuery plugin並將其包含在您的頁面中。

  2. 編寫您的點擊處理程序一次,並使用您的服務器端代碼/腳本語言將其包含在每個HTML頁面中。一個示例PHP包括here

這可能是考慮HTML模板的好時機 - 包含應該被包含在你的網站的每個網頁標準的HTML(頁眉,頁腳,導航等)的文檔。

相關問題