![](/img/trans.png)
[英]jQuery - dynamically created select boxes not triggering function when value is selected
[英]jQuery .on('change', function() {} not triggering for dynamically created inputs
问题是我有一些动态创建的输入标签集,而且我还有一个函数可以在输入值改变时触发。
$('input').on('change', function() {
// Does some stuff and logs the event to the console
});
但是.on('change')
不会为任何动态创建的输入触发,仅适用于加载页面时存在的项目。 不幸的是,这让我有点.on
因为.on
旨在替代.live()
和.delegate()
所有这些都是.bind()
包装器:/
有没有其他人遇到过这个问题或知道解决方案?
您应该为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/
用这个
$('body').on('change', '#id', function() {
// Action goes here.
});
您可以使用以下几种方法中的任何一种:
$("#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
});
您可以使用:
$('body').ready(function(){
$(document).on('change', '#elemID', function(){
// do something
});
});
它和我一起工作。
$("#id").change(function(){
//does some stuff;
});
只是为了澄清一些潜在的混淆。 这仅在 DOM 加载时存在元素时才有效:
$("#target").change(function(){
//does some stuff;
});
当稍后动态加载元素时,您可以使用:
$(".parent-element").on('change', '#target', function(){
//does some stuff;
});
$(document).on('change', '#id', aFunc);
function aFunc() {
// code here...
}
您可以使用 'input' 事件,该事件在元素获得用户输入时发生。
$(document).on('input', '#input_id', function() {
// this will fire all possible change actions
});
来自w3 的文档
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.