Итак, я работаю над этим весь день, и я не могу понять, как заставить его работать. У меня есть таблица с TD, заполненная содержимым, которое извлекается из базы данных с помощью команды «getJSON» JQuery. У меня есть настройка обработчика событий, так что при двойном щелчке элемента TD его содержимое становится элементом INPUT со значением по умолчанию, содержащим предыдущее содержимое TD.JQuery: Поиск объекта, создавшего элемент DOM
входного элемента создается внутри объекта Javascript под названием «Input», как так:
var Input = function() {
var obj = this;
obj.docElement = $('<input/>').attr('type', 'text').val(obj.defaultValue);
}
Все это работает до сих пор. Моя проблема заключается в том, что я хочу, чтобы пользователь мог нажать клавишу RETURN, пока выбран INPUT, чтобы показать, что они закончили редактирование этого поля. Я пробовал что-то вроде:
$(obj.docElement).bind('keydown', function(e) {
if(e.which == 13) {
// do something
}
}
Это прекрасно работает в первый раз, когда вы редактируете поле; однако, если вы редактируете поле несколько раз, он перестает работать. Также, если вы случайно дважды щелкнете TD, в конце концов он сломается. Я протестировал его и решил, что элемент INPUT перестает регистрировать событие типа, как будто «bind» больше не существует на нем.
Я сделал много поисковых запросов и решил, что обычный обработчик JQuery «привязка», расположенный на элементе INPUT, ненадежный. Поэтому я решил присоединить обработчик события к объекту документа используя вместо этого следующее:
$(document).bind('keydown', function(e) {
// do something
}
Я знаю, что я могу использовать «e.target», чтобы получить целевой элемент, что действие выполняется на (и это работает me, e.target правильно относится к элементу INPUT).
Мой вопрос: как мне получить объект, который создал элемент INPUT в первую очередь? Мне нужно иметь возможность выполнять функции, содержащиеся в соответствующем классе «Вход» , который использовался для создания элемента INPUT. Мне нужно вызвать эти функции из функции «$ (document) .bind». Поэтому в основном я должен иметь возможность получить входной объект родительского/создателя элемента INPUT.
Если я не объяснил ничего достаточно ясно, просто дайте мне знать. Любая помощь в этом вопросе будет очень признательна! Я также открыт для предложений по альтернативным методам (кроме использования «$ (document) .bind»).
Спасибо!
Большое спасибо! Прочитав ответ, я решил использовать вложенные петли for-in, чтобы пройти через мою иерархию объектов и проверить элемент документа каждого элемента ввода на переданный элемент e.target.Возможно, это не самый эффективный способ, но все работает сейчас! Еще раз спасибо! –