JQuery: Cannot read property 'toLowerCase' of undefined
У меня есть следующий код:
$('input[name="switch-tab"]').on('change', function () {
$.get("/workspace/devicetype", function (type) {
updateState($(this).val(), type);
});
if ($(this).val() === 'tab-1') {
// тут я меняю классы на элементах
}
if ($(this).val() === 'tab-2') {
// тут я меняю классы на элементах
}
if ($(this).val() === 'tab-3') {
// тут я меняю классы на элементах
}
if ($(this).val() === 'tab-4') {
// тут я меняю классы на элементах
}
});
function updateState(newState, type) {
$.post("/workspace/ToTabView", {
state: newState,
device: type
}, function (result) {
$("#_current_tab").empty();
$("#_current_tab").append(result);
});
}
но при выполнении function updateState(newState, type) я получаю ошибку:
Uncaught TypeError: Cannot read property 'toLowerCase' of undefined at n.fn.init.val (jquery.min.js:4) at Object.success (main.js:52) at i (jquery.min.js:2) at Object.fireWith [as resolveWith] (jquery.min.js:2) at y (jquery.min.js:4) at XMLHttpRequest.c (jquery.min.js:4)
Подскажите в чем может быть проблема?
Ответы (1 шт):
Автор решения: Igor
→ Ссылка
Контекст, с которым вызывается анонимная функция, передаваемая в $.get, не тот.
$.get("/workspace/devicetype", (function (type) {
updateState($(this).val(), type);
}).bind(this));
или
$.get("/workspace/devicetype", type =>
updateState($(this).val(), type)
);
или
var self = this;
$.get("/workspace/devicetype", function (type) {
updateState($(self).val(), type);
});