У меня странная проблема, используя 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.