Как я могу получить доступ к атрибуту (this) внутри события onSelect персидского плагина datepicker jquery - PullRequest
4 голосов
/ 05 августа 2020

У меня есть несколько экземпляров класса внутри dom. как в примере ниже.

let element = $(".datepicker-birthdate").pDatepicker({
    observer: true,
    altField: '.observer-example-alt',
    format: 'YYYY/MM/DD',
    initialValue: false,
    autoClose: true,
    calendar:{
        'persian': {
            'locale': 'fa',
            'showHint': false
        },
        'gregorian': {
            'locale': 'en',
            'showHint': false
        }
    },
    onSelect: function (date, e){
        e: is undefine here also
        element: is the last instance of .datepicker-birthdate
    }
});

элемент всегда возвращает последний экземпляр средства выбора даты, однако я хочу получить доступ к тому, в котором есть изменения. У кого-нибудь есть решение по этому поводу?

Ответы [ 2 ]

2 голосов
/ 05 августа 2020

На самом деле библиотека должна предоставлять этот объект внутри события onSelect, хотя они этого не сделали, возможно, использование foreach l oop в классе, как описал Рори МакКроссан, было бы лучшей альтернативой.

1 голос
/ 05 августа 2020

Предполагая, что функция onSelect не получает событие или элемент в качестве параметров, что, по-видимому, имеет место, учитывая ваше описание того, что они были undefined в вопросе, тогда вы можете вместо этого вручную l oop через элементы в классе и индивидуально создайте для них средство выбора даты. Это позволяет поддерживать ссылку this в функции обработчика select:

$(".datepicker-birthdate").each(function() {
  let $datePicker = $(this);
  $datePicker.pDatepicker({
    observer: true,
    altField: '.observer-example-alt',
    format: 'YYYY/MM/DD',
    initialValue: false,
    autoClose: true,
    calendar: {
      'persian': {
        'locale': 'fa',
        'showHint': false
      },
      'gregorian': {
        'locale': 'en',
        'showHint': false
      }
    },
    onSelect: function(date) {
      // use $datepicker as needed here...
      $datePicker.addClass('foo');
    }
  });
});
...