jQuery - 捕获动态创建的文本框的创建的事件

时间:2014-05-30 09:21:20

标签: javascript jquery html

jQuery是否有一个事件可以捕获动态创建的DOM内容的创建?或者有没有办法在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);

2 个答案:

答案 0 :(得分:1)

您可以使用事件委派并搜索以AplEducationTbl:EstName开头的ID吗?

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

jsFiddle

答案 1 :(得分: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.