jquery在c#中找不到动态创建的元素

时间:2013-03-20 15:38:32

标签: jquery jquery-selectors

我正在创建一个输入框并尝试向该输入添加事件keydown。如果我静态创建输入,我可以用jquery找到它。但是,如果我在后面的代码中创建它,我无法通过jquery找到它。

这是我动态创建输入的c#代码

result0 += "<div style='float:left;width:130px'>Telephone: </div><div style='float:left;width:200px'><input id='txt_basic_telno" + i + "' class='blue_input' type='text' value='" + dr["MobilePhone"].ToString() + "' style='width:250px' maxlength='11' /></div><div style='clear:both'></div>";

这是我的jquery代码,当用户在焦点位于输入框时按键时应该触发

$("#txt_basic_telno").keydown(function (event) {
        alert('test');
});

我该如何解决这个问题?

5 个答案:

答案 0 :(得分:1)

试试这个

$(document).on('keydown',"#txt_basic_telno",function (event) {
        alert('test');
});

阅读http://api.jquery.com/on

答案 1 :(得分:1)

您需要使用on

$(document).on('keydown',"[id^=txt_basic_telno]", function (event) {
        alert('test');
});

请尽量不要将此附加到document,因为它无效。用最近的静态容器替换文档。

这是一个fiddle来演示

修改

来自破坏的被盗选择器.......他的答案更好但我想保留文件评论,因为它很重要

答案 2 :(得分:1)

如果您的ID不完全是txt_basic_telno,但只是以txt_basic_telno开头,似乎表示您的代码,那么您可以使用此代码:

$(document.body).on('keydown', '[id^=txt_basic_telno]', function(e) {
     alert('click!');
});

答案 3 :(得分:1)

您正在使用两个不同的ID:'txt_basic_telno“+ i +”'和'txt_basic_telno'

答案 4 :(得分:-1)

jQuery将事件处理程序绑定到与调用jQuery函数时选择器匹配的任何现有对象,因此如果要将其应用于动态创建的内容,则需要调用每次创建新元素后都会运行jQuery .keydown函数。