JQuery:委托和datepicker

时间:2011-09-05 23:30:49

标签: jquery

我需要给定类中的每个文本输入都是一个日期选择器。类似的东西:

$("input[type=text].time").datepicker();

但是我通过Jquery.load()添加了很多代码,所以我相信我需要一个委托。问题是我不知道该怎么做,因为据我所知,load事件不能在委托中使用。如果它存在将很容易:

$(document).delegate("input[type=text].time", "load", function(){
    $(this).datepicker();
});

2 个答案:

答案 0 :(得分:16)

$("body").delegate("input[type=text].time", "focusin", function(){
   $(this).datepicker();
});

我在身体上使用了委托,因为我不知道你的代码是否在你可以定位的其他容器中。

这是一个针对具有委托的特定div的小提琴:

http://jsfiddle.net/MpqAy/

答案 1 :(得分:0)

我知道这个问题相对古老,但是我只想分享我的解决方案,因为它在2018年仍然很重要。

 $('#container').off().on('focusin', '.date', function () => {
     $(this).datepicker();
 });

如果您将jQuery与TypeScript一起使用

 $('#container').off().on('focusin', '.date', (e) => {
     $(e.currentTarget).datepicker();
 });

您会在这里注意到off()函数。这将清除有问题的Jquery对象中的事件。因此,您不会遇到任何冒泡的问题。不过请记住,它会杀死该对象上的所有事件,而不仅仅是您再次运行的事件。

我不建议在文档,html或正文级别的jQuery对象上使用off()on()。不过只是我的意见。