2014-05-30 72 views
0

jQuery是否有捕获创建动态创建的DOM内容的事件?或者有没有在jQuery中做这件事的方法?jQuery - 捕获创建动态创建的文本框的事件

我注入jQuery的网页动态地创建文本框。我无法控制这一点。然而,我想每3秒检查一次是否创建了一个新的文本框,然后用一个值填充它。

的文本框如下所示:

<input id="AplEducationTbl:EstName:0" type="text" onchange="return false"> 
<input id="AplEducationTbl:EstName:1" type="text" onchange="return false"> 

所以有几个问题。该id使用冒号,我不知道如何在jQuery中转义。 onchange返回false,这会阻止我挂钩我的事件。

使用:

setTimeout(function(){ 
     /* What do I put here? */ 
    }, 3000); 
+0

您是否尝试过与选择“输入[tpye ='文字']“? – keypaul

回答

0

不过,我想检查每3秒一个新的文本框是否已创建

为了这一点,你必须使用setInterval()方法代替:

var len = $('input[id^="AplEducationTbl:EstName"]').length; 
setInterval(function() { 
    if ($('input[id^="AplEducationTbl:EstName"]').length > len) { 
     console.log('changed.'); 
     len = $('input[id^="AplEducationTbl:EstName"]').length; 
    } //^^^^----------------------------------------update the value of len 
}, 3000); 

该id使用冒号,我不知道如何在jQuery中转义。

对于这个要么你可以使用两个斜线\\其他答案,并用字符串表示其他方式的建议把值引号该ID是这样的:

$('input[id^="AplEducationTbl:EstName"]') 
//-----------^-----------------------^------put the value in quotes like this 
//------------------------------------------and you are good to go. 
1

您可以使用事件代表团和搜索开始AplEducationTbl:EstName的ID?

$(document).on("change", "input[id^=AplEducationTbl\\:EstName]", function() { 
    console.log("Change"); 
}); 

jsFiddle