选项对象初始化中的方法仅在每页加载时调用一次

时间:2011-03-07 14:57:29

标签: javascript jquery

我有以下代码

$(".datePicker").datepicker({
    dateFormat: 'dd/mm/yy',
    autoSize: true,
    changeYear: true,
    changeMonth: true,
    yearRange: getYearRange()
});

虽然有很多.datePickers,但getYearRange函数只调用一次。 要清楚,将使用$(this)参数调用getYearRange函数。

1 个答案:

答案 0 :(得分:1)

尝试指定功能名称,不用“()”。执行此操作时,您将设置该配置属性为对该函数的引用。当您使用“()”进行编码时,您告诉JavaScript 调用函数,同时它将该对象放在一起,以便它可以使用返回值。

现在,假设日期选择器代码期望一个函数。如果您要做的是根据所涉及的DOM元素的特征初始化每个具有一些特殊计算年份范围的日期选择器小部件,那么您将做一些不同的事情:

$('.datepicker').each(function() {
  var $dp = $(this);
  $dp.datepicker({
    dateFormat: 'dd/mm/yy',
    autoSize: true,
    changeYear: true,
    changeMonth: true,
    yearRange: getYearRange.call(this)
  });
});

这将确保每个日期选择器都有机会单独计算出自己的年份范围。

编辑 - 查看jQuery UI datepicker文档,如果你以这种方式传递它(作为函数引用),我认为它不会调用你的“getYearRange”函数。因此,如果您希望函数在页面上为每个日期选择器运行一次,那么您将使用上面的“.each()”循环。