Javascript jQuery-将.live转换为.on单击
可能重复:Javascript jQuery-将.live转换为.on单击,javascript,jquery,jquery-on,Javascript,Jquery,Jquery On,可能重复: 我有以下代码(为此我简化了这些代码),它们与jquery-1.7一起工作得很好 $("td.ui-datepicker-week-col a").live("click", function () { alert("hello"); }); 我正在尝试升级我的代码,这样我就可以升级我的jQuery包版本了,所以我把它改成了这个版本 $("td.ui-datepicker-week-col").on("click", "a", function () { aler
我有以下代码(为此我简化了这些代码),它们与jquery-1.7一起工作得很好
$("td.ui-datepicker-week-col a").live("click", function () {
alert("hello");
});
我正在尝试升级我的代码,这样我就可以升级我的jQuery包版本了,所以我把它改成了这个版本
$("td.ui-datepicker-week-col").on("click", "a", function () {
alert("hello");
});
但这没什么用。它也不会抛出任何错误,所以我看不出问题出在哪里
有什么想法吗?如果开始时没有“td.ui datepicker week col”
元素,则必须选择现有的永久集。比如说
$(document).on("click", "td.ui-datepicker-week-col a", function () {
alert("hello");
});
与
live
相反,on函数中的仅在调用绑定函数时定义的集合中工作。动态的是当事件发生时,选择器作为参数传递给on
的解释。您的on
语句的第一部分绑定到调用时已经存在的元素。要正确使用委托,您需要选择一个当时存在的元素,并保证它是事件元素的父元素。如果没有其他功能,您可以始终使用文档
(这也是live
所做的!)
$("body").on("click", "td.ui-datepicker-week-col a", function () {
alert("hello");
});
问题可能是加载页面时,DOM中不存在“td.ui datepicker week col”
,并且附加了事件上的
将处理程序附加到父元素,该父元素将在加载javascript代码时出现。最简单的(更糟,但有效)是:
每次单击文档时都会触发此操作,然后jQuery将验证单击的元素是否为“td.ui-datepicker-week-col a”
,如果为true,则执行回调
一种更有效的方法是连接到一个现有的分包商,在这个分包商中,“td.ui-datepicker-week-col A”
将是肯定的。试试这个
$('.ui-datepicker-week-col').on('click', 'a', function () {
alert("hello");
});
看到这个了吗
您好。您确定td.ui datepicker week col
页面加载中的“生命”吗?您有一个拼写错误,在td.ui datepicker week col
之前有一个引语太多了。尽管有拼写错误(我相信您会编辑),一个很好的答案解释得很好,让我很容易理解。谢谢
$("body").on("click", "td.ui-datepicker-week-col a", function () {
alert("hello")
})
$('.ui-datepicker-week-col').on('click', 'a', function () {
alert("hello");
});