我对这个问题的措词表示歉意,但是我一半的问题是不知道如何问这个问题。

情境

我创建了一个名为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')的实例。



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

附言

试图为此创建一个jsfiddle,但由于某种原因而无法使jQuery UI正常工作。 https://jsfiddle.net/zL8on6np/5/如果您知道如何使库正常工作,请随时使用此功能。

最佳答案

$(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

关于javascript - 如何附加可访问html属性的jquery ui元素?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34617897/

10-12 00:14
查看更多