Подтвердить что ты не робот

Конфликт между событиями

У меня странная проблема, используя bootstrap-sass и bootstrap-multiselect. Похоже, обработчики событий bootstrap-sass блокируют обработчики multiselect для выпадающего меню и т.д.

Эти пакеты установлены через bower:

'bootstrap-sass-official#3.3.1',
'bootstrap-multiselect'

Приложение построено на django и python, поэтому шаблон, который связывает скрипты со страницей:

{% compress js %}
    <script src="{% static 'jquery/dist/jquery.js' %}"></script>
    <script src="{% static 'bootstrap-sass/assets/javascripts/bootstrap.js' %}"></script>
{% endcompress %}

привязка script на определенной странице с помощью:

{% block extrajs %}
    <script src="{{ STATIC_URL }}bower_components/bootstrap-multiselect/dist/js/bootstrap-multiselect.js"
            type="text/javascript" charset="utf-8"></script>
{% endblock %}

создание мультиселектора:

$('.multiselect').multiselect()

Ничего особенного. Но когда я пытаюсь использовать мультиселекторный контроль в пользовательском интерфейсе, он не падает. Нет ошибок в консоли.

После некоторого серфинга через код я понял, что есть некоторые обработчики событий, которые препятствуют выполнению обработчиков мультиселектора:

  // APPLY TO STANDARD DROPDOWN ELEMENTS
  // ===================================

  $(document)
    .on('click.bs.dropdown.data-api', clearMenus)
    .on('click.bs.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })
    .on('click.bs.dropdown.data-api', toggle, Dropdown.prototype.toggle)
    .on('keydown.bs.dropdown.data-api', toggle, Dropdown.prototype.keydown)
    .on('keydown.bs.dropdown.data-api', '[role="menu"]', Dropdown.prototype.keydown)
    .on('keydown.bs.dropdown.data-api', '[role="listbox"]', Dropdown.prototype.keydown)

поэтому сложным решением было отключить стандартные обработчики событий на странице, где используется многосегмент:

$(document)
     .off('click.bs.dropdown.data-api')
     .off('keydown.bs.dropdown.data-api')

Что кажется немного взломанным и не лучшим решением для меня.

Существуют ли способы разрешения конфликта? Thanx.

4b9b3361

Ответ 1

Полагают, что Bootstrap дважды связан с страницей. Явно, как показано выше, и неявно через темы stepoftheweb.com в комплекте script (я пропустил эту деталь в вопросе, я думал, что это не имеет значения)

Итак, я удалил первую ссылку script на страницу, и теперь она отлично работает.