我正在尝试为通过ajax返回的一些输入框实现onchange
事件。但是,我的代码不起作用,也没有显示任何错误。
这是我的ajax返回的内容。
<td>
<input type='text' class='form-control form-filter input-sm'
id='units_$inpuxIndex' name='units_$inpuxIndex' value='$details->units'>
</td>
<td>
<input type='text' class='form-control form-filter input-sm'
id='ppp_$inpuxIndex' name='ppp_$inpuxIndex'
value='$details->customer_price'/>
</td>
这是我的jquery代码: -
<script>
$("#units_1").on('change keyup paste', function() {
alert('I am pretty sure the text box changed');
});
</script>
units_1 是通过ajax返回的众多输入框之一的名称。
答案 0 :(得分:3)
您需要使用 event delegation ,因为它们是动态添加的
事件委托允许我们将单个事件侦听器附加到父元素,该元素将为匹配选择器的所有后代触发,无论这些后代现在是存在还是将来添加。 (摘自http://learn.jquery.com/events/event-delegation/)
$(document).on('change keyup paste',"#units_1", function() {
alert('I am pretty sure the text box changed');
});
更新:如果您要选择ID以units_
开头的元素,那么您可以使用 Attribute Starts With Selector [name^=”value”]
$(document).on('change keyup paste','[id^="units_"]', function() {
// if you want select based on name then use '[name^="units_"]'
alert('I am pretty sure the text box changed');
});