jQuery:使用$ .delegate将附加函数附加到现有事件处理程序

时间:2012-05-07 17:51:45

标签: jquery delegates

我的组织有一个由多个应用程序共享的标准jQuery / JavaScript框架。在这个框架中,我们为jQuery的datepicker功能设置了一个基本标准,可以使用动态加载的元素:

$(document).delegate("input.calendar", "click, focus", function() { 
    myAppDatepicker = $(this).datepicker({
        changeYear: true,
        dateFormat: "yy-mm-dd"
    });
});

我想做点什么:

$(document).delegate("input.calendar", "click, focus", function() { 
    myAppDatepicker.datepicker("option", "maxDate", 0);
});

向datepicker添加其他选项。这个方法不起作用 - 我猜是因为第二个委托侦听器正在替换第一个侦听器中的处理程序,我想在其中附加其他选项。

目前,这会抛出“myAppDatepicker未定义”错误。

我可以通过Firebug中的$ .bind来做到这一点,但它对动态加载的元素不起作用。关于如何在加载时对DOM中不存在的元素进行此工作的任何想法?

1 个答案:

答案 0 :(得分:0)

更改:

$(document).delegate("input.calendar", "click, focus", function() { 
    **myAppDatepicker**.datepicker("option", "maxDate", 0);
});

$(document).delegate("input.calendar", "click, focus", function() { 
    **$(this)**.datepicker("option", "maxDate", 0);
});

按预期附加其他选项。