.on()不能在页面加载后添加HTML

时间:2014-02-19 13:44:21

标签: javascript jquery jquery-ui datepicker

[编辑]

Here's a jsFiddle with the issue.

[/编辑]

我正在使用datepicker(jQuery UI)的网站上工作。

datepicker旁边,如果用户从time dropdown选择工作日或周末,则需要更改datepicker

我已经编写了这段代码,试图从datepicker中获取ui-datepicker-week-end类来测试它是否是一个周末,但我根本无法得到console.log

$('.ui-datepicker').on('click', 'tr', function() {
    console.log($(this));
});

Here's the dev site目前的情况。我认为问题是datepicker的HTML是用jQuery添加的,因此.on()不知道它是否可以用来获取类?我知道.live()会做到这一点,但现在我相信这已经贬值了。

有关如何通过点击td

获取课程的任何想法

4 个答案:

答案 0 :(得分:1)

交换语法。 on()应绑定到动态内容的最近的静态父级:

$('tr').on('click', '.ui-datepicker', function() {
    console.log($(this));
});

答案 1 :(得分:1)

试试这个:

$(document).on('click', '.ui-datepicker td', function() {
    console.log(this.className);
});

其中#date是页面加载时文档中可用的静态元素( datepicker )并将点击事件绑定到.ui-datepicker的td上,那么您可以获取日历中单击的td的类名。

答案 2 :(得分:1)

语法很好,但是你可能在初始化datepicker之后但之前没有绑定事件。

确保您在$('.yourClass').datepicker()之前$('.ui-datepicker').on...。{/ p>

console.log($('.ui-datepicker').length)之前执行.on()会告诉您是否初始化了日期选择器。

如果它不起作用,它意味着(但我不这么认为).ui-datepicker也是动态的。您必须定位父母:

$('.parent').on('click', '.ui-datepicker tr', function(){});

修改

jQuery UI似乎停止传播,因此无法绑定点击事件。

但它有一个选项,允许在选择日期时绑定事件:

http://api.jqueryui.com/datepicker/#option-onSelect

初始化datepicker时将其传递给选项对象。

最好使用此功能,因为您还可以使用键盘选择日期(因此不会触发任何点击)。

http://jsfiddle.net/jAs5X/2/

答案 3 :(得分:-1)

更改为

$('.ui-datepicker tr').on('click', function() {
    console.log($(this));
});