为什么我的动态创建元素的类不被识别?

时间:2013-07-29 18:07:38

标签: jquery jquery-ui class dynamically-generated

我有一个文本框。如果选中并按Tab键,将打开一个新行。这到目前为止工作正常。但是,相同的操作在动态创建的文本框中不起作用。即使它与调用原始文本框的类相同。我试图在互联网上找到解释,但我无法得到/理解正确的答案。有人可以帮助我吗?

http://jsfiddle.net/RzCLM/1/

$('.list').keydown(function(key){
    if(key.which === 9) {
        $('.ingredients_list').append('<li><input class="list" type="text"/><i><img class="remove" src="images/remove.svg"></i></li>');

    }
}); 

2 个答案:

答案 0 :(得分:1)

使用$(document).on定位动态创建的元素:

$(document).on('keydown', '.list', function(key){
    if(key.which === 9) {
        $('.ingredients_list').append('<li><input class="list" type="text"/><i><img class="remove" src="images/remove.svg"></i></li>');

    }
}); 

jsfiddle

答案 1 :(得分:0)

这是因为您需要使用事件委派,因为在执行.list时新的.keydown()元素不存在,请将您的代码更改为:

$(document).on('keydown','.list',function(key){
        if(key.which === 9) {
            $('.ingredients_list').append('<li><input class="list" type="text"/><i><img class="remove" src="images/remove.svg"></i></li>');

        }
    }); 

JSFiddle Demo