Конфликт 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 делает свое дело.

Другие вопросы по тегам