我收到此错误,它源自jquery框架。当我尝试在文档准备好加载选择列表时,出现此错误。我似乎找不到我为什么收到此错误的信息。
它适用于change事件,但是尝试手动执行功能时出现错误。
未捕获的TypeError:无法读取未定义的属性’toLowerCase’-> jquery-2.1.1.js:7300
这是代码
$(document).ready(function() { $("#CourseSelect").change(loadTeachers); loadTeachers(); }); function loadTeachers() { $.ajax({ type: 'GET', url: '/Manage/getTeachers/' + $(this).val(), dataType: 'json', cache: false, success:function(data) { $('#TeacherSelect').get(0).options.length = 0; $.each(data, function(i, teacher) { var option = $('<option />'); option.val(teacher.employeeId); option.text(teacher.name); $('#TeacherSelect').append(option); }); }, error: function() { alert("Error while getting results"); } }); }
当您调用loadTeachers()DOMReady时,的上下文this将不是#CourseSelect元素。
loadTeachers()
this
#CourseSelect
您可以通过在DOM加载时触发元素上的change()事件来解决此问题#CourseSelect:
change()
$("#CourseSelect").change(loadTeachers).change(); // or .trigger('change');
或者可以使用$.proxy更改上下文来运行该函数:
$.proxy
$("#CourseSelect").change(loadTeachers); $.proxy(loadTeachers, $('#CourseSelect'))();
或以上的等效JS bind():
bind()
$("#CourseSelect").change(loadTeachers); loadTeachers.bind($('#CourseSelect'));