我只是把它放在一个 .js 文件中。
mysite_common.js - 站点范围的常用工具和函数
mysite_page_a.js - 页面 a 的独特功能
mysite_page_b.js - 页面 b 的独特功能
对于页面 b 你包括 b.js 而在页面 a 你将包括 a.js
然后在您各自的 unique.js 中,您可以将您的功能包装在 ondomready 或类似文件中。
将它与您的 PHP 分开,这样以后就不会那么烦人了,这也意味着您可以依靠 js 的缓存来保持页面加载更苗条。
您还可以查看诸如 YUI 加载器之类的东西,它允许您执行更复杂的事情,例如按需加载一些 js 功能。
您可以使用事件委托来根据上下文提供不同的功能。
基本上,它通过将事件侦听器附加到捕获子元素点击的容器元素来工作。然后,您可以一起取消单个事件侦听器,并查看来自父级的提示。说:
<div id='container' class='page_a'>
...
<input name='somename'>
...
</div>
然后
var attachDelegates = function(container){
container.onclick = function(e) {
e = e || window.event;
var t = e.target || e.srcElement;
//Your logic follows
if(t.name === 'somename'){
dosomething(t);
}
if(t.className === 'someclass'){
... something else ...
}
};
和onload = function(){attachDelegates('container');};
每个页面的 attachDelegates 函数可能不同,或者您可以有一个单一的和简单的附加提示到容器或选择附加哪些类。
这些是更连贯的解释和示例:
http ://cherny.com/webdev/70/javascript-event-delegation-and-event-hanlders
http://blog.andyhume.net/event-delegation-without-javascript-图书馆
我个人使用 YUI3
http://developer.yahoo.com/yui/3/examples/node/node-evt-delegation.html
因为它为我提供了 CSS3 样式选择器,并且到目前为止非常轻松。