Datepicker UI使用$(this)设置defaultDate

时间:2016-07-08 22:47:26

标签: jquery jquery-ui datepicker

我有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)获取数据?

任何帮助非常感谢! ,谢谢

1 个答案:

答案 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'

类名的通用命名约定也是小写的。