如何附加jquery ui元素以及对html属性的访问?

时间:2016-01-05 17:37:05

标签: javascript jquery jquery-ui

我为问题的措辞道歉,但我的一半问题不知道如何提出这个问题。

方案

我创建了一个名为date的php表单项。它只是一个包含一些特殊类和属性的文本字段。 HTML输出如下所示:

<div class="form-item type-date name-dob required">
    <label for="dob"> DOB <span class="required-text">*</span></label>
    <input type="textfield" name="dob" maxlength="10" size="12" value="07/01/2015" class="datepicker processed hasDatepicker" change_month="1" change_year="1" min_year="-120" max_year="+0" id="dp1452013829790">
</div>

然后我想使用这些自定义属性,change_month,change_year等。从一个js调用附加datepicker,而不是为日期字段的每个实例编写js。

$('.form-item.type-date input').datepicker(
{
  'changeMonth' : $(this).attr('change_month') == "1",
  'changeYear' : $(this).attr('change_year') == "1",
  'yearRange' : $(this).attr('min_year') + ':' + $(this).attr('max_year')
});

问题

未定义js代码$(this)的部分。我希望它是选择器$('.form-item.type-date input')的一个实例。

问题

如何访问选择器实例的属性?

P.S。

试图为此制作一个jsfiddle,但由于某种原因无法让jquery ui使用它。 https://jsfiddle.net/zL8on6np/5/如果您知道如何使库正常工作,请随意使用它。

2 个答案:

答案 0 :(得分:2)

$(this)不是你所期望的原因是它不在选择器的回调函数中,所以它可能在全局范围内。

您可以使用jQuery的each函数迭代相关的input元素,如下所示:

$('.form-item.type-date input').each(function() {
    $(this).datepicker(
    {
      'changeMonth' : $(this).attr('change_month') == "1",
      'changeYear' : $(this).attr('change_year') == "1",
      'yearRange' : $(this).attr('min_year') + ':' + $(this).attr('max_year')
    });
});

<强> Working fiddle

答案 1 :(得分:1)

没有类型textfield应为text

<input type="text" name="dob" maxlength="10" size="12" value="07/01/2015" class="datepicker processed hasDatepicker" change_month="1" change_year="1" min_year="-120" max_year="+0" id="dp1452013829790">

希望这会有所帮助。