On (‘ change’,function (){}不触发动态创建的输入

问题是,我有一些动态创建的输入标记集,而且我还有一个函数,它可以在任何时候触发输入值的更改。

$('input').on('change', function() {
// Does some stuff and logs the event to the console
});

但是,.on('change')不触发任何动态创建的输入,只触发页面加载时出现的项。不幸的是,这让我陷入了一点困境,因为 .on意味着是 .live().delegate()的替代品,它们都是 .bind():/的包装器

还有其他人有这个问题或者知道解决办法吗?

609300 次浏览

您应该为 on函数提供一个选择器:

$(document).on('change', 'input', function() {
// Does some stuff and logs the event to the console
});

在这种情况下,它将如您所期望的那样工作。同时,最好指定一些元素而不是文档。

为了更好地理解,请阅读本文: http://elijahmanor.com/differences-between-jquery-bind-vs-live-vs-delegate-vs-on/

$("#id").change(function(){
//does some stuff;
});

用这个

$('body').on('change', '#id', function() {
// Action goes here.
});

只是为了澄清一些潜在的困惑。 这只有在 DOM 加载时出现一个元素时才有效:

$("#target").change(function(){
//does some stuff;
});

当稍后动态加载元素时,您可以使用:

$(".parent-element").on('change', '#target', function(){
//does some stuff;
});

您可以使用以下几种方法中的任何一种:

$("#Input_Id").change(function(){   // 1st way
// do your code here
// Use this when your element is already rendered
});




$("#Input_Id").on('change', function(){    // 2nd way
// do your code here
// This will specifically call onChange of your element
});


$("body").on('change', '#Input_Id', function(){    // 3rd way
// do your code here
// It will filter the element "Input_Id" from the "body" and apply "onChange effect" on it
});
$(document).on('change', '#id', aFunc);


function aFunc() {
// code here...
}

可以使用“ input”事件,该事件在元素获取用户输入时发生。

$(document).on('input', '#input_id', function() {
// this will fire all possible change actions
});

来自 W3的文件

你可使用:

$('body').ready(function(){
$(document).on('change', '#elemID', function(){
// do something
});
});

对我有用。