我的网络项目中有多个页面使用完全相同的JS功能。我正在复制并粘贴相同的功能到所有页面的js文件。但最近将另一个名为common_fns.js
的js文件的常用函数分开,每个页面只创建了选择器缓存变量,并按some_page.js
,common_fns.js
的顺序放置在每个页面的顶部。像这样的东西
some_page.js
$(function() {
var closer=$("#nlfcClose"),
NewFormContainer=$("#NewLessonFormContainer"),
opener=$("#nlfcOpen"),
NewForm=$("#NewLessonForm"),
OpsForm=$("#LessonOps"),
SelectBox=$( "#courses" ),
SelectBoxOptions=$("#courses option"),
jquiBtn=$(".jquiBtn"),
AddOp="AddLesson",
DelOp="DelLesson";
});
common_fns.js
$(function() {
SelectBoxOptions.text(function(i, text) {
return $.trim(text);
});
SelectBox.combobox();
jquiBtn.button();
closer.button({
icons: {
primary: "ui-icon-closethick"
},
text: false
}).click(function(){
NewFormContainer.slideUp("slow");
});
opener.click(function(){
NewFormContainer.slideDown("slow");
});
NewForm.submit(function(){
var querystring = $(this).serialize();
ajaxSend(querystring, AddOp);
return false;
});
OpsForm.submit(function(){
var querystring = $(this).serialize();
ajaxSend(querystring, DelOp);
return false;
});
});
当我将常用功能复制并粘贴到每个页面的文件时,它正在工作。但现在它没有:即使对于第一个函数,Firebug也会显示错误消息undefined SelectBoxOptions
。我错过了什么?只有这样才能将相同的功能复制粘贴到每个页面的js文件中?
答案 0 :(得分:5)
您在事件处理程序中声明了局部变量,这就是您不能在下一个事件处理程序中使用它们的原因。
声明函数外的变量:
var closer, NewFormContainer, opener, NewForm, OpsForm, SelectBox, SelectBoxOptions, jquiBtn, AddOp, DelOp;
$(function() {
closer = $("#nlfcClose");
NewFormContainer = $("#NewLessonFormContainer");
opener = $("#nlfcOpen");
NewForm = $("#NewLessonForm");
OpsForm = $("#LessonOps");
SelectBox = $( "#courses" );
SelectBoxOptions = $("#courses option");
jquiBtn = $(".jquiBtn");
AddOp = "AddLesson";
DelOp = "DelLesson";
});