我想知道什么是仅在特定页面上执行java脚本代码的最佳方式。只在特定页面上执行js的最佳方法
让我们想象一下,我们有一个基于模板的网站,重新编写内容IST设置规则,jQuery的可用,它基本上是这样的:
<!DOCTYPE html>
<html>
<head>
<script src="script.js"></script>
</head>
<body>
...
include $content;
..
</body>
</html>
内容“信息”包含一个按钮,我们希望点击时会发生什么情况,当您将鼠标悬停在文本字段上时,内容“提醒”应该会显示为一条消息。
什么是引发这些行动,而不会在一个错误的最好方式,因为对象是不是发现了什么?
选项之一:使用window.location.pathname
$(document).ready(function() {
if (window.location.pathname == '/info.php') {
$("#button1").click(function(){'
//do something
})
}else if(window.location.pathname == '/alert.php'){
$("#mytextfield").hover(){
alert('message');
}
}
方法二:检查是否存在元素
$(document).ready(function() {
if ($("#button1").length > 0) {
$("#button1").click(function(){'
//do something
})
}else if ($("#mytextfield").length > 0){
$("#mytextfield").hover(){
alert('message');
}
}
方案三:包括脚本中加载模板
//stands for itself
是他们的一个更好的解决方案?还是我必须与这些解决方案中的一个相处?
您的经验,使用或与此主题相关的任何链接都将受到赞赏。
//编辑:
我可能已经选择了一个坏榜样,实际的代码将是事端,如:
mCanvas = $("#jsonCanvas");
mMyPicture = new myPicture (mCanvas);
其中myPicture构造函数获取的canvas元素的背景下,和如果mCanvas未定义,则会引发错误。
一个好主意是只在需要它的页面上包含javascript,而'$(document).ready'可能会在页面上多次调用,所以你应该在这里安全。 – 2012-03-06 05:30:52
如果您使用jQuery,则不需要检查元素是否存在,然后再分配事件处理程序:“$(”someselector“)。click(...)'将点击处理程序应用于_zero或more_元素匹配“someselector” - 如果没有匹配,则不会发生错误。 – nnnnnn 2012-03-06 05:31:51
@IanBishop:这是选项三:) - >加载模板的js @ nnnnnn:看到我的编辑,但你说得对,关于'只'点击动作 – 2012-03-06 05:38:05