在更改时,即使是动态插入的输入标记上的日期选择器的处理程序也不会;不起作用
On change even handlers for a datepicker on a dynamically inserted input tag doesn't work?
我有两个动态插入的标签,ID分别为从拾取和拾取到。我正在使用这个插件: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.
}});
第二个代码片段有效,但并不一致。当我点击两个输入框并第二次点击其中一个时,它就起作用了。我该如何解决这个问题?
您可以将事件应用于容器元素并委托它:
$("#myContainer").on('changeDate', '#pick-from, #pick-to', function() { ... });
http://api.jquery.com/on/
.on( events [, selector ] [, data ], handler )
当提供选择器时,事件处理程序被称为委派。当事件直接发生在绑定元素上时,不调用处理程序,而仅针对与选择器匹配的子体(内部元素)调用处理程序。jQuery将事件从事件目标标记到附加处理程序的元素(即从最里面到最外面的元素),并为与选择器匹配的路径上的任何元素运行处理程序。
相关文章:
- 平均值.on(事件[,选择器][,数据],处理程序)
- 委派的事件处理程序选择器
- jQuery选择器中的条件处理
- KnockoutJS处理引导程序日期选择器和日期格式
- 如何使用d3.js选择器删除处理程序
- Bootstrap日期选择器setDatesDisabled无法处理按钮单击
- 通过使用不同的选择器选择元素,为元素提供多个事件处理程序
- 选择器不处理下拉列表更改
- 如何让 jquery 选择器在更改处理程序中看到更新的 dom
- 使用数据选择器和时刻处理不同语言的日期
- 所有点击处理程序的 jQuery 选择器
- jQuery和事件处理程序,为什么拆分选择器很重要
- 当有多个选择器时处理 $(this)
- 在jQuery点击处理程序中获取选择器父ID
- Extjs 4.1.1 在日期选择器中添加了新按钮,但其处理程序不起作用
- javascript “this” 如何处理来自 jquery 的多个选择器返回
- 使用类选择器附加事件处理程序是否会影响该类的动态添加元素
- Jquery不处理带有ID选择器的匿名函数调用
- 将点击处理程序与CSS同级选择器组合时,IE中的奇怪行为
- DOM未更新,jquery选择器未检测到动态元素以供进一步处理