Я использую подключаемый модуль jQuery datepicker от KelvinLuck. Это очень просто и понятно, но я бы хотел привязать его к любым изменениям и отображать дату в консоли. Функция есть, но работает только внутри функции, которая инициализирует datePicker. Я хотел бы использовать функцию привязки вне этой функции. Вот jsFiddle.

HTML

<div class="date-pick"></div>

JS

$(function() {
  $('.date-pick')
    .datePicker({
      createButton: false,
      displayClose: false,
      closeOnSelect: true,
      selectMultiple: true,
      inline: true,
      startDate: '01/01/2005',
      endDate: '31/12/2011'
    })
    .dpSetSelected(
      '18/06/2011'
    )
    .bind(
      'click',
      function() {
        $(this).dpDisplay();
        this.blur();
        return false;
      }
    )
    .bind(
      'dateSelected',
      function(e, selectedDate, $td, state) {
        console.log('You ' + (state ? '' : 'un') // wrap
          + 'selected ' + selectedDate);

      }
    )
});

Текущий код успешно отображает дату в консоли, но я хочу, чтобы эта функция привязки была вне текущей функции. Так что-то вроде этого:

$('date-pick').bind(
  'dateSelected',
  function(e, selectedDate, $td, state) {
    console.log('You ' + (state ? '' : 'un') // wrap
      + 'selected ' + selectedDate);

  }
)

Это возможно?

0
user2896120 22 Июл 2017 в 21:12
Вместо bind() используйте on() и проверьте
 – 
Anant Kumar Singh
22 Июл 2017 в 21:16
1
Вам не хватает . перед date-pick, кроме того, он будет работать нормально, см. Это обновил jsfiddle. Но вам следует подумать о том, чтобы не использовать такую ​​старую версию jQuery, а bind устарел, начиная с версии 3.0, а с версии 1.7 функция on рекомендуется вместо bind.
 – 
t.niese
22 Июл 2017 в 21:19

1 ответ

Лучший ответ

Вот ваше решение:

$(function() {
  $('.date-pick')
    .datePicker({
      createButton: false,
      displayClose: false,
      closeOnSelect: true,
      selectMultiple: true,
      inline: true,
      startDate: '01/01/2005',
      endDate: '31/12/2011'
    });
    // Your binding event functions have been removed from here. Its declared outside this function.
});
$('.date-pick').bind(    // You did not put `.` here
  'dateSelected',
  function(e, selectedDate, $td, state) {
    console.log('You ' + (state ? '' : 'un') // wrap
      + 'selected ' + selectedDate);

  }
);
1
Himanshu Upadhyay 22 Июл 2017 в 21:26
1
Тогда "ответ" содержит только Here is your solution: без объяснения того, что вы изменили и почему он должен работать с вашими изменениями, не очень полезен. А если это просто опечатка, то это должен быть комментарий, а вопрос должен быть закрыт.
 – 
t.niese
22 Июл 2017 в 21:24
Извини @ t.niese. Позвольте дополнить свой ответ комментариями.
 – 
Himanshu Upadhyay
22 Июл 2017 в 21:25
Теперь все в порядке? Если это было полезно, могу ли я проголосовать за и можно ли его принять? Огромное спасибо заранее. Рад помочь.
 – 
Himanshu Upadhyay
22 Июл 2017 в 21:39