我有两个动态插入的标签,I从从和选择到。我正在使用这个插件:http://www.eyecon.ro/bootstrap-datepicker/,当它被点击时调用一个数据报警器,并在日期改变时执行一些任务。过去,当输入标记没有被动态插入时,它可以工作,但是应用程序行为必须改变,而现在,输入标记是动态插入的。下面的代码不再起作用:
var picker = $('#pick-from, #pick-to').datepicker().on('changeDate', function(ev) {
picker.datepicker('hide');
var today = new Date(ev.date),
dd = today.getDate(),
mm = today.getMonth() + 1,
yyyy = today.getFullYear();
if (dd < 10) dd = '0' + dd;
if (mm < 10) mm = '0' + mm;
var inputVal = mm + '/' + dd + '/' + yyyy,
target = ev.currentTarget.id;
// All my other code goes here.
});我甚至试过:
$(document).on('click', '#pick-from, #pick-to', function() {
var picker = $(this).datepicker().on('changeDate', function(ev) {
picker.datepicker('hide');
var today = new Date(ev.date),
dd = today.getDate(),
mm = today.getMonth() + 1,
yyyy = today.getFullYear();
if (dd < 10) dd = '0' + dd;
if (mm < 10) mm = '0' + mm;
var inputVal = mm + '/' + dd + '/' + yyyy,
target = ev.currentTarget.id;
// A lot of other code comes here.
}});第二个代码片段工作,但不一致。当我第二次单击两个输入框并单击任何一个输入框时,它都能工作。我该怎么解决这个问题?
发布于 2014-09-20 01:25:28
可以将事件应用于容器元素并委托它:
$("#myContainer").on('changeDate', '#pick-from, #pick-to', function() { ... });.on( events [, selector ] [, data ], handler ) 当提供选择器时,事件处理程序被称为委托。当事件直接发生在绑定元素上时,不调用处理程序,而只调用与选择器匹配的后代(内部元素)。jQuery将事件从事件目标气泡到附加处理程序的元素(即最内部到最外层的元素),并对沿着该路径与选择器匹配的任何元素运行处理程序。
https://stackoverflow.com/questions/25944245
复制相似问题