Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在函数内调用DatePicker时,DatePicker不工作_Javascript_Jquery_Datepicker - Fatal编程技术网

Javascript 在函数内调用DatePicker时,DatePicker不工作

Javascript 在函数内调用DatePicker时,DatePicker不工作,javascript,jquery,datepicker,Javascript,Jquery,Datepicker,我有个奇怪的问题。我正在尝试初始化文档就绪函数中的日期选择器: $(document).ready(fncInitialize); function fncInitialize() { fncBindControls(); } function fncBindControls() { var objDate = $(this).find("input[data-datepicker='True']"); objDate

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

$(document).ready(fncInitialize);

    function fncInitialize() {
        fncBindControls();
    }

    function fncBindControls() {
         var objDate = $(this).find("input[data-datepicker='True']");
        objDate.datepicker();
    }
function fncInitialize() {
  fncBindControls.call(this);
}
问题是这不起作用。日期选择器不工作。幸运的是,当我重新定位元素时:

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

    function fncBindControls() { 
    }

这个代码有效。但是为什么呢?我只是把datepicker放在另一个函数上,以便于维护,但它不起作用。我真的需要把它放在document ready的第一个函数中吗?

问题在于,在第二个函数中,您失去了这个函数的作用域。您需要将其作为参数传递:

$(document).ready(fncInitialize);

function fncInitialize() {
  fncBindControls(this);
}

function fncBindControls(el) {
  var objDate = $(el).find("input[data-datepicker='True']");
  objDate.datepicker();
}
或在调用函数时提供作用域:

$(document).ready(fncInitialize);

    function fncInitialize() {
        fncBindControls();
    }

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

当您尝试绑定控件时,源页面中是否存在此输入[data datepicker='True']?它工作得很好,我理解您的解释。非常感谢!