使用vanilla javascript而不是jquery

时间:2014-04-17 13:31:16

标签: javascript jquery html

我试图将VKI(请参阅http://www.greywyvern.com/code/javascript/keyboard)附加到通过Javascript动态添加到DOM的元素中。

基本上,它只是一个只有一行开头的表格,并且有#34;添加行""添加行"和"删除行"。它变得棘手,因为每一行都有一个需要连接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。

4 个答案:

答案 0 :(得分:1)

尝试:

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

.get()从jQuery对象中检索DOM元素。 VKI不是jQuery小部件,因此它不适用于jQuery对象,它需要原始的DOM元素。

答案 1 :(得分:1)

我认为d-bro82和ZiNNED都是正确的,但尝试var myInput = $('#myInput')[0]; 由于VNK_attach只接受dom元素,[0]应该删除jQuery包装器

答案 2 :(得分:0)

尝试

var myInput = $('#myInput');
祝你好运

答案 3 :(得分:0)

jQuery变体无效的原因是$(newRow).find('#myInput')document.getElementById('myInput')不同。见this SO question。显然VKI_attach只接受DOM元素而不是jQuery包装元素。