Я хочу очистить выбор от всех других выборов с этим классом, но тот изменился.Я следовал документации select2 об очистке выделения, но продолжаю получать ошибку JavaScript.
$( document ).ready(function() { $('.select').select2(); var locked = false; $('.select').change(function(){ console.log($('.select').not(this).length); if (!locked) { $('.select').not(this).each(function(i, e){ locked = true; $(this).val(null).trigger('change'); }); locked = false; } }); });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <link href="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.5/css/select2.min.css" rel="stylesheet"/> <script src="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.5/js/select2.min.js"></script> <select class="select" id="1" style="width: 90%;" multiple> <option value="1">Selection 1</option> <option value="2">Selection 2</option> </select> <br /> <br /> <select class="select" id="2" style="width: 90%;" multiple> <option value="1">Selection 1</option> <option value="2">Selection 2</option> </select> <br /> <br /> <select class="select" id="3" style="width: 90%;" multiple> <option value="1">Selection 1</option> <option value="2">Selection 2</option> </select>
Решение состояло в том, чтобы заблокировать функцию при ее запуске и разблокировать ее после завершения.
Хорошо, теперь я понял.Это создаст бесконечный цикл каждый раз, когда он меняет выбор.Он начнется снова и снова запустится, потому что у меня есть изменения на всех выборках ...
Решение моей проблемы в коде в моем посте.