Javascript 日期选择器下一次单击事件
我需要为jQuery日期选择器上的“下一步”按钮执行一个事件,并从以下答案中获得所需的内容: 但我不明白的是为什么:Javascript 日期选择器下一次单击事件,javascript,jquery,dom,datepicker,Javascript,Jquery,Dom,Datepicker,我需要为jQuery日期选择器上的“下一步”按钮执行一个事件,并从以下答案中获得所需的内容: 但我不明白的是为什么: $(document).on('click', '.ui-datepicker-next', function() { // Preform event }; 有效,但: $(".ui-datepicker-next").on('click', function() { // Preform event }; 在我的情况下,在两次单击后不起作用?这称为事件委派,在D
$(document).on('click', '.ui-datepicker-next', function() {
// Preform event
};
有效,但:
$(".ui-datepicker-next").on('click', function() {
// Preform event
};
在我的情况下,在两次单击后不起作用?这称为
事件委派
,在DOM已呈现后将项目添加到DOM时使用
问题是click事件没有绑定到所需的元素,因为该元素稍后将被注入DOM,因此它还不存在。因此jQuery必须将click事件绑定到呈现DOM时实际存在的元素,并在元素注入DOM后使用事件委派(冒泡)来捕获事件
因此,您不需要使用$(document)
作为锚点,但需要使用呈现DOM时存在的元素
但是,首先使用$(document)是有帮助的。在
上,让代码正常工作,然后(一旦正常工作),您可以进一步缩小用于捕获事件的元素范围
进一步阅读:
来自:
委派事件的优点是,它们可以处理来自子元素的事件,这些子元素将在以后添加到文档中。通过选择在附加委派事件处理程序时保证存在的元素,可以使用委派事件来避免频繁附加和删除事件处理程序
在第一种情况下,处理程序被附加到保证存在的文档
。然后,选择器确保仅当您单击.ui datepicker next
时才触发处理程序
但是,在第二种情况下,没有可用于附加处理程序的对象,因为注册处理程序时,DOM中不存在.ui datepicker next
。