[英]Date-picker Next click event
我需要为jQuery日期选择器上的下一个按钮执行一个事件,并从此答案中获取所需的信息:
jQuery datepicker将事件添加到下一个和上一个按钮
但是我不明白为什么:
$(document).on('click', '.ui-datepicker-next', function() {
// Preform event
};
可以,但是:
$(".ui-datepicker-next").on('click', function() {
// Preform event
};
在我的情况下,单击两次后不起作用?
这称为event delegation
,在已呈现DOM之后将项目添加到DOM时使用。
问题在于click事件未绑定到所需元素,因为该元素以后将注入到DOM中,因此它尚不存在。 因此,jQuery必须将click事件绑定到呈现DOM时实际存在的元素,并在将元素注入DOM后使用事件委托(冒泡)来捕获事件。
因此,您不必使用$(document)
作为锚,但是您确实需要使用呈现DOM时存在的元素。
但是,从使用$(document).on
并使代码开始工作,然后(一旦工作),您可以进一步缩小将用于捕获事件的元素的范围,这将很有帮助。
进一步阅读:
从jQuery API文档 :
委派事件的优势在于,它们可以处理来自后代元素的事件,这些事件在以后的时间添加到文档中。 通过选择保证在附加委托事件处理程序时会出现的元素,您可以使用委托事件来避免频繁附加和删除事件处理程序的需要。
在第一种情况下,处理程序将附加到保证存在的document
上。 然后,选择器确保仅在单击.ui-datepicker-next
时才触发处理程序。
但是,在第二种方法中,没有可用于附加处理程序的对象,因为在注册处理程序时, .ui-datepicker-next
在DOM中不存在。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.