让datepicker直播 - JQuery

cra*_*gtb 7 jquery jquery-ui datepicker

我知道当你动态创建一个元素时,你必须使用类似的东西:

$("#id").live("click", function() {
    //something
});
Run Code Online (Sandbox Code Playgroud)

现在我有这个:

$('#tdInput1').datepicker({
    inline: true
});
Run Code Online (Sandbox Code Playgroud)

我的问题是:我怎么做这个活的,因此它可以与动态创建的元素进行交互.

Vis*_*hal 20

接受的解决方案不适用于键盘焦点事件..所以我不得不改为:

$('.parent').on('focusin', '.datepicker', function(e) {
    $(this).datepicker(options);
});
Run Code Online (Sandbox Code Playgroud)

不得不改为.live,.on因为jquery 1.9.1不包括该.live方法.以上适用于鼠标事件以及键盘焦点事件.


day*_*ker 11

根据:Jquery .live可以使用但不能使用.datepicker

这应该工作:

$("#tdInput1").live("click", function(){
    $(this).datepicker({ 
        inline: true 
    });
});
Run Code Online (Sandbox Code Playgroud)

编辑:这个答案适用于旧版本的jQuery.对于jQuery 1.9+,请尝试Vishal的答案.


Chr*_*att 7

你正在处理两件不同的事情.jQuery live用于事件绑定,而datepicker不是特定地绑定到事件,而只是在某个时刻向元素添加功能.

live处理事件的唯一原因是jQuery实际上将事件处理程序附加到祖先元素,并且(由于事件在javascript中冒泡),祖先实际上接收事件并委托它,就好像它来自元素一样.这个原则有点复杂,但又长而短,只能用于事件.

如果要添加datepicker功能,只需datepicker在创建新元素后调用该函数即可.