Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 日期选择器下一次单击事件_Javascript_Jquery_Dom_Datepicker - Fatal编程技术网

Javascript 日期选择器下一次单击事件

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

我需要为jQuery日期选择器上的“下一步”按钮执行一个事件,并从以下答案中获得所需的内容:

但我不明白的是为什么:

$(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