首先有一个select控件:
<div id="courseDiv">
<select id="isAlready">
<option value="already">已选</option>
<option value="notYet">未选</option>
</select>
<!-- 其他的代码忽略... -->
</div>
在下面的方法里为控件绑定onchange事件的处理函数:
function showCourseDiv(studentId) {
//用了flexigrid控件,与问题无关,可以忽略之
$("#courseFlexGrid").flexOptions({
newp : 1,
addparams : [{
name : "studentId",
value : studentId
}]
}).flexReload();
//这里绑定的事件方法!
$("#isAlready").change(function() {
//调用填充flexigrid的方法,使用了闭包
//searchCourseFlexGrid()的代码就不贴了
searchCoursesFlexGrid(studentId);
});
//显示包含select控件的div,自己封装的
//与问题无关,代码忽略了
showCustomDiv(true, 'courseDiv');
}
主要的流程是这样的:
所有学生记录都使用同一个courseDiv来添加/删除课程,点击一个学生的“选课/删课”按钮后,执行showCourseDiv(studentId)
方法:显示courseDiv,把学生的已选课程都展示出来,然后绑定onchange事件处理函数searchCoursesFlexGrid(studentId)。
在事件函数里,会根据传来的studentId参数和select控件的值,查询对应学生的已选or未选课程。
遇到的问题是这样的:
点击给学生1(假设studentId=1001)的"选课/删课"按钮,这时候会执行showCourseDiv(1001)方法,方法中给select控件onchange事件绑定了searchCoursesFlexGrid(1001)方法,这些都没有问题,下拉菜单的功能都正常。
问题在这里,之后再点击其他学生的“选课/删课”按钮,修改下拉菜单值的时候,每次都会执行searchCoursesFlexGrid(1001),
参数永远都是学生1的id。
用firebug断点:showCourseDiv()
方法的参数正常,点击下拉菜单时,searchCoursesFlexGrid()
参数一直是1001。
我目前只学了半个月的jQuery,js也非常不熟,这个问题纠结两天了,希望大神们帮忙解决一下 Orz
$("#isAlready").off('change');
最好设置全局变量current_student_id
function showCourseDiv(studentId) {
window.current_student_id = studentId;
}
$("#isAlready").change(function() {
searchCoursesFlexGrid();
});
function searchCoursesFlexGrid()
{
var studentId = window.current_student_id;
}
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。