【问题标题】:DatePicker Doesn't Work When Called Inside a Function在函数内部调用 DatePicker 时不起作用
【发布时间】:2017-05-19 08:22:41
【问题描述】:

我有这个奇怪的问题。我正在尝试在文档就绪函数中初始化日期选择器:

$(document).ready(fncInitialize);

    function fncInitialize() {
        fncBindControls();
    }

    function fncBindControls() {
         var objDate = $(this).find("input[data-datepicker='True']");
        objDate.datepicker();
    }

问题是这不起作用。日期选择器不工作。幸运的是,当我重新定位元素时:

function fncInitialize() {
        var objDate = $(this).find("input[data-datepicker='True']");
        objDate.datepicker();
        fncBindControls();
    }

    function fncBindControls() { 
    }

此代码有效。但为什么?我只是将日期选择器放在另一个功能上以实现可维护性,但它不起作用。我真的需要把它放在 document ready 的第一个函数中吗?

【问题讨论】:

  • 当您尝试 BindControls 时,源页面中是否存在此 input[data-datepicker='True']

标签: javascript jquery datepicker


【解决方案1】:

问题是因为在第二个函数中您丢失了this 的范围。您需要将其作为参数传递:

$(document).ready(fncInitialize);

function fncInitialize() {
  fncBindControls(this);
}

function fncBindControls(el) {
  var objDate = $(el).find("input[data-datepicker='True']");
  objDate.datepicker();
}

或者在调用函数时提供一个作用域:

function fncInitialize() {
  fncBindControls.call(this);
}

【讨论】:

  • 效果很好,我理解你的解释。非常感谢!
猜你喜欢
  • 2013-03-12
  • 2020-09-03
  • 1970-01-01
  • 2017-11-04
  • 2015-07-19
  • 1970-01-01
  • 1970-01-01
  • 2012-11-28
  • 2011-10-09
相关资源
最近更新 更多