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");
});