Конфликт JQuery и Prototype.js
Мне нужно включить prototype.js и jQuery, но это портит мой bootstrap-select.js, похоже, из-за некоторых противоречий.
После выбора опции в списке выбора она исчезает.
Я включил эти файлы JS:
jquery-2.1.0.min.js
bootstrap-select.min.js
prototype.min.js
И это в <head>
раздел:
var $j = jQuery.noConflict();
$j(document).ready(function($) {
$j('.selectpicker').selectpicker();
});
И HTML:
<select class="selectpicker">
<option value="volvo">Volvo</option>
<option value="saab">Saab</option>
<option value="mercedes">Mercedes</option>
<option value="audi">Audi</option>
</select>
Смотрите скрипку здесь: http://jsfiddle.net/0vh03tnn/1/
1 ответ
Попробуйте поменять порядок вещей. Сначала включите Prototype, затем jQuery, затем свой блок с помощью jQuery.noConflict() и, наконец, скрипт начальной загрузки. Насколько я понимаю, noConflict заключается в следующем: с чем бы ни был связан $, запомните его, затем создайте объект jQuery и новый $ нетрамбированный $ внутри этого объекта и, наконец, верните $ в глобальную область видимости, с которой он начинался. При таком порядке вещей, что у вас есть, $ может не указывать на функцию Prototype $ в тот момент, когда noConflict делает свое дело.