В моем проекте используется раскрывающийся список Kendo UI, и я сталкиваюсь с проблемой, когда пользователь дважды щелкает элемент списка ul li, выбирается неправильный элемент. Если это один клик, то это не проблема. Я сталкиваюсь с этой проблемой только в IE11. Ниже приведены варианты, которые я пробовал.
- Пытался отключить двойной щелчок. Эта функция не выполнялась, так как обработчик щелчков срабатывал дважды.
- Пытался удалить прослушиватель событий щелчка, используя jquery off. Это было проблемой, так как я не мог восстановить события обратно, так как пользователь мог бы хотеть выбрать ту же опцию.
Используется jquery .one () в элементе списка, по которому щелкнули, но у него та же проблема Я столкнулся с off ().
Последнее, что я пытался установить задержку в обработчике события щелчка, который я добавил, чтобы я мог остановить второй щелчок. Эта опция работала, но не работала, когда я использовал ее для решения динамически добавляемых элементов.
Приведенный ниже код работает нормально. Но проблема возникает, когда я изменяю тот же код для создания этой работы для динамически создаваемых выпадающих списков.
$(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);
});