Несколько моих страниц используют как JQuery, так и Protoype. Поскольку я обновился до версии 1.3 JQuery, это, по-видимому, вызывает проблемы, потому что обе библиотеки определяют функцию с именем «$».
JQuery предоставляет функцию noConflict(), которая передает контроль над $ другим библиотекам, которые могут ее использовать. Итак, похоже, мне нужно просмотреть все мои страницы, которые выглядят так:
<head>
<script type="text/javascript" src="/obp/js/prototype.js"></script>
<script type="text/javascript" src="/obp/js/jquery.js"></script>
</head>
и измените их, чтобы они выглядели так:
<head>
<script type="text/javascript" src="/obp/js/prototype.js"></script>
<script type="text/javascript" src="/obp/js/jquery.js"></script>
<script type="text/javascript">
jQuery.noConflict();
var $j = jQuery;
</script>
</head>
Затем я смогу использовать «$» для Prototype и «$j» (или «jQuery») для JQuery. Я не совсем доволен дублированием этих двух строк кода на каждой релевантной странице и ожидаю, что в какой-то момент кто-то, вероятно, забудет добавить их на новую страницу. Я бы предпочел иметь возможность сделать следующее
- Создайте файл j
query-noconflict.js
, который «включает»jquery.js
и две строки кода, показанные выше. - Импортировать
jquery-noconflict.js
(вместоjquery.js
) на все мои страницы JSP/HTML
Однако я не уверен, можно ли включить один файл JS в другой, как я описал? Конечно, альтернативное решение состоит в том, чтобы просто добавить 2 строки кода выше в jquery.js напрямую, но если я это сделаю, мне нужно будет не забывать делать это каждый раз, когда я обновляю JQuery.