我有2个输入与JqueryUI datepicker绑定。
<div>Start Date <input id="startdate" type="text" class="DP" data-Dformat='2010-01-01' ></div>
<div>End Date <input id="enddate" type="text" class="DP" data-Dformat='2010-01-27' ></div>
这是我的剧本:
// INIT Date Picker
$('.DP').datepicker({
showOn: "button",
buttonText: "Date",
dateFormat: "yy-mm-dd",
});
// Setter
$('.DP').datepicker( "option", "defaultDate", $(this).attr("data-dformat") );
我想点击日期选择器,将默认显示日期设置为数据属性&#39; dformat&#39;使用$(this)来获取数据,但它不起作用 - 它只显示当前日期。
如果我更换&#39; setter&#39;与
// Setter
$('.DP').datepicker( "option", "defaultDate", '2010-01-01' );
一切都按预期工作,为什么我可以使用$(this)获取数据?
任何帮助非常感谢! ,谢谢
答案 0 :(得分:0)
执行$('.DP').datepicker( "option", "defaultDate", '2010-01-01' );
之类的语句不会改变上下文。 this
将引用正在执行该函数的任何上下文。
通过执行以下操作,您可以实现您尝试做的事情:
$('.DP').each(function(i,elm){
$(this).datepicker( "option", "defaultDate", $(this).attr("data-dformat") );
});
请注意,现在我们正在内部执行一个不同的函数,其中上下文是当前正在迭代的元素。
此外,您不能使用大写字母的HTML属性,因此data-Dformat='2010-01-01'
应为data-dformat='2010-01-01'
。
类名的通用命名约定也是小写的。