Как исправить конфликт Zoomooz.js с автозаполнением JQueryUI?
Когда я помещаю zoomooz.js на веб-страницу с автозаполнением jqueryui, он работает только в первый раз, раскрывающееся меню больше не принимает щелчок мышью. Для работы я наводил указатель мыши на цель и нажимал клавишу Enter на клавиатуре.
<link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
<script src="https://code.jquery.com/jquery-1.12.4.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/zoomooz/1.1.6/jquery.zoomooz.min.js"></script>
<script>
$( function() {
var availableTags = [
"ActionScript",
"AppleScript",
"Asp",
"BASIC",
"C",
"C++",
"Clojure",
"COBOL",
"ColdFusion",
"Erlang",
"Fortran",
"Groovy",
"Haskell",
"Java",
"JavaScript",
"Lisp",
"Perl",
"PHP",
"Python",
"Ruby",
"Scala",
"Scheme"
];
$( "#tags" ).autocomplete({
source: availableTags
});
} );
</script>
<div class="ui-widget">
<label for="tags">Tags: </label>
<input id="tags">
</div>
<img class="zoomTarget" data-targetsize="0.05" data-closeclick="true" src="file.png">
автозаполнение тегов работает не всегда, только в первый раз, но если я удалю zoomooz, все будет нормально
1 ответ
Я не могу воспроизвести проблему, как вы ее описали. Если вы используете автозаполнение jQuery UI, вы должны использовать правильные параметры. Вот рабочий пример.
$(function() {
var availableTags = [
"ActionScript",
"AppleScript",
"Asp",
"BASIC",
"C",
"C++",
"Clojure",
"COBOL",
"ColdFusion",
"Erlang",
"Fortran",
"Groovy",
"Haskell",
"Java",
"JavaScript",
"Lisp",
"Perl",
"PHP",
"Python",
"Ruby",
"Scala",
"Scheme"
];
$("#numean").autocomplete({
source: availableTags,
minLength: 1,
open: function() {
console.log("Open Triggered");
},
focus: function() {
console.log("Focus Triggered");
return true;
},
select: function() {
console.log("Select Triggered");
return true;
}
});
$(".zoomTarget").zoomTo({
duration: 1000,
closeclick: true,
targetsize: 0.05
});
});
<link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
<script src="https://code.jquery.com/jquery-1.12.4.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/zoomooz/1.1.6/jquery.zoomooz.min.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
<input type="text" id="numean" value="">
<br />
<img class="zoomTarget" width="50%" src="https://i.imgur.com/FThOLcL.jpg">
Узнать больше:
Обновить
После некоторого тестирования я вижу, как пузырился click
мероприятие прерывается. Например, в приведенном выше примере в первом раунде все работает, как ожидалось. Во втором поиске вы можете ↓ сделать свой выбор и нажать Enter иfocus
а также select
срабатывает. Но если вы попытаетесь переместить мышь и щелкнуть элемент, толькоfocus
срабатывает. Я почти уверен, что конфликт исходит изcloseclick: true
настройка. Я думаю, что это прослушивание в более высоком масштабе после Zoom, а затем события click дляselect
.
Я бы посоветовал установить closeclick: false
а затем создать еще один метод закрытия. Либо кнопка, либо другое более конкретное событие.
Вы также можете заметить, что я загрузил Zoomooz перед jQuery. Я заметил, что если они загружались в другом порядке, было какое-то странноеwindow
конфликты.