2012-01-28 96 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(页眉,页脚,导航等)的文档。

相关问题