首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >对于动态创建的输入,jQuery .on('change',function() {}不触发

对于动态创建的输入,jQuery .on('change',function() {}不触发
EN

Stack Overflow用户
提问于 2012-11-16 22:51:38
回答 8查看 550.4K关注 0票数 168

问题是,我有一些动态创建的输入标记集,并且我还有一个函数,该函数在输入值发生变化时触发。

代码语言:javascript
复制
$('input').on('change', function() {
  // Does some stuff and logs the event to the console
});

但是,.on('change')不会为任何动态创建的输入触发,只会为加载页面时存在的项触发。不幸的是,这让我有点为难,因为.on.live().delegate()的替代品,所有这些都是.bind()的包装器:/

还有没有其他人遇到过这个问题或者知道解决方案?

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2012-11-16 22:53:33

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

代码语言:javascript
复制
$(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/

票数 307
EN

Stack Overflow用户

发布于 2016-05-05 18:58:44

使用这个

代码语言:javascript
复制
$('body').on('change', '#id', function() {
  // Action goes here.
});
票数 25
EN

Stack Overflow用户

发布于 2018-05-02 15:14:50

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

代码语言:javascript
复制
$("#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
});
票数 22
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13418963

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档