Работает с ванильным JavaScript, но не JQuery

0

Я пытаюсь подключить VKI (см. Http://www.greywyvern.com/code/javascript/keyboard) к элементу, который динамически добавляется в DOM через Javascript.

По существу, это таблица с только одной строкой для начала и там "Add Row" и "Delete Row". Это становится сложно, потому что каждая строка имеет вход, который требует VKI.

Ниже приведен фрагмент моего более крупного кода для обработки добавления и удаления строки.

$('#add-passenger-row').click(function(){
    get_lastID();
    $('#passenger-information tbody').append(newRow);


    // this doesn't work --- throws "Uncaught TypeError: undefined is not a function" 
    var myInput = $(newRow).find('#myInput');
    VKI_attach(myInput);

    // this works
    var myInput = document.getElementById('myInput');
    VKI_attach(myInput);

});

Мой вопрос... как я могу сделать эту работу? т.е. присоединить VKI к каждому входу в строке, который добавляется динамически, когда пользователь нажимает кнопку "Добавить строку",

Я могу создать JSBin, если вопрос недостаточно ясен.

  • 0
    Каково содержание newRow ?
  • 2
    Кроме того, кажется, что вы добавляете несколько элементов с одинаковым идентификатором ...
Показать ещё 1 комментарий
Теги:

4 ответа

1
Лучший ответ

Пытаться:

var myInput = $(newRow).find('#myInput').get(0);
VKI_attach(myInput);

.get() извлекает элемент DOM из объекта jQuery. VKI не является виджетами jQuery, поэтому он не работает с объектами jQuery, он ожидает наличия необработанных элементов DOM.

1

Я думаю, что d-bro82 и ZiNNED оба правильны, но попробуйте var myInput = $ ('# myInput') [0]; Поскольку VNK_attach принимает только элемент dom, [0] должен удалить обертку jQuery

0

Причина, по которой вариант jQuery не работает, заключается в том, что $(newRow).find('#myInput') не совпадает с document.getElementById('myInput'). Смотрите этот вопрос. Видимо, VKI_attach принимает только элемент DOM, а не элемент оболочки jQuery.

0

Пытаться

var myInput = $('#myInput');

Удачи

Ещё вопросы

Сообщество Overcoder
Наверх
Меню