我有这个奇怪的问题。我正在尝试在文档就绪函数中初始化一个日期选择器:
while (lengthN == 0)
{
printf_s("\nName too big; please enter a name within 15
characters!\n\n");
scanf_s("Enter name: %s", &name, 15);
lengthN = strlen(name);
}
问题是这不起作用。 datepicker不起作用。幸运的是,当我重新定位元素时:
$(document).ready(fncInitialize);
function fncInitialize() {
fncBindControls();
}
function fncBindControls() {
var objDate = $(this).find("input[data-datepicker='True']");
objDate.datepicker();
}
此代码有效。但为什么?我只是将datepicker放在另一个函数上以保持可维护性,但它不起作用。我真的需要把它放在文件准备好的第一个功能中吗?
答案 0 :(得分:4)
问题是因为在第二个功能中你已经失去了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);
}