У меня есть функция, которую я хочу вызвать при определенных событиях. Эта функция должна получить доступ к объекту "this" элемента, с которым произошло событие. Мне трудно передать его в функцию.
Это мой код, но он не работает, похоже, проблема в том, что thisVariable не является оригинальным элементом. У меня есть похожий код, который разбит на больше функций, но работает, и я просто хотел упростить вещи.
$(document).on('focusin', '.formInput', function () {
freezingScanNewRowEvaluation(this);
});
function freezingScanNewRowEvaluation(thisVariable) {
var currentInput = thisVariable;
// other stuff, more event listeners binded to the original element
}
Должен ли этот подход действительно работать, и я делаю что-то еще не так, или передаю "это", как этот вздор? Спасибо
Редактировать: Вся моя функция: Edit2: Кажется, проблема заключается в привязке большего количества событий к $ (currentInput), он регистрирует кнопку Enter, но больше ничего не обнаруживается, и в консоли не отображаются ошибки.
function freezingScanNewRowEvaluation(thisVariable) {
var currentInput = thisVariable;
var parentRow = thisVariable.closest(".formRow");
var parentComponent = thisVariable.closest(".newScanRowComponent");
var nextRow = $(parentRow).next();
if ($(parentRow).hasClass("formRow--editMode") == false) {
return;
}
$(parentRow).find("label").text($(".newScanRowComponent").length);
// Save current value of element
$(currentInput).data('oldVal', $(currentInput).val());
// Look for changes in the value
$(currentInput).bind("propertychange change click keyup input paste", function (event) {
if (event.which == 13) {
// stuff - This detects ok, but none of the other events do...
}
// If value has changed...
var inputValueNew = $(currentInput).val();
var inputValueOld = $(currentInput).data('oldVal');
if (inputValueOld != inputValueNew) {
// Updated stored value
$(currentInput).data('oldVal', $(currentInput).val());
if (inputValueNew.length - inputValueOld.length > 6) {
rowSuccessMarkerShow(parentRow);
switchInputRowType(parentRow);
// stuff
}
}
});
function switchInputRowType(row) {
if ($(row).hasClass("formRow--editMode" && $(row).find("input").val() != "")) {
// stuff
} else if (row.hasClass("formRow--active")) {
// stuff
}
}
function rowSuccessMarkerShow(row) {
if (!$(row).hasClass("formInput1") && $(row).find("input").val() != "") {
// stuff
}
}
}