Двойной щелчок приводит к выбору неправильного элемента в IE11 - PullRequest
0 голосов
/ 01 мая 2020

В моем проекте используется раскрывающийся список Kendo UI, и я сталкиваюсь с проблемой, когда пользователь дважды щелкает элемент списка ul li, выбирается неправильный элемент. Если это один клик, то это не проблема. Я сталкиваюсь с этой проблемой только в IE11. Ниже приведены варианты, которые я пробовал.

  1. Пытался отключить двойной щелчок. Эта функция не выполнялась, так как обработчик щелчков срабатывал дважды.
  2. Пытался удалить прослушиватель событий щелчка, используя jquery off. Это было проблемой, так как я не мог восстановить события обратно, так как пользователь мог бы хотеть выбрать ту же опцию.
  3. Используется jquery .one () в элементе списка, по которому щелкнули, но у него та же проблема Я столкнулся с off ().

  4. Последнее, что я пытался установить задержку в обработчике события щелчка, который я добавил, чтобы я мог остановить второй щелчок. Эта опция работала, но не работала, когда я использовал ее для решения динамически добавляемых элементов.

Приведенный ниже код работает нормально. Но проблема возникает, когда я изменяю тот же код для создания этой работы для динамически создаваемых выпадающих списков.

$(selector).click(function(e) {
  var that = this;
  setTimeout((function() {
    var dblclick = parseInt($(that).parent().data('double'), 10);
    if (dblclick > 0) { // Second click - I need to cancel this click. 
        $(that).data('double', dblclick-1);
        e.stopPropagation();
    } else { // First click - If I click no issue.
        $(that).parent().data('double', 0);
    }
  })(e), 300);
  }).dblclick(function(e) {
      $(this).parent().data('double', 0);
  });

Проблемы c код Пожалуйста, исправьте меня, если я делаю неправильно в приведенном ниже коде.

$('body').on('click', 'selector', function(e) {
  var that = this;
  setTimeout((function() {
    var dblclick = parseInt($(that).parent().data('double'), 10);
    if (dblclick > 0) { // Second click - I need to cancel this click. 
        $(that).data('double', dblclick-1);
        e.stopPropagation();
    } else { // First click - If I click no issue.
        $(that).parent().data('double', 0);
    }
  })(e), 300);
  }).dblclick(function(e) {
      $(this).parent().data('double', 0);
  });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...