#jquery
#jquery
Вопрос:
Плагин, который мне нужно реализовать на другом веб-сайте, использует некоторые функции jquery. Веб-сайт может использовать или не использовать jquery. Возможно ли использовать мой собственный jquery для моих функций без влияния уже вызванных фреймворков (jquery, prototype)? Использование функции jQuery.noConflict() влияет на другие функции, используемые на веб-сайте.
Комментарии:
1. Вы имеете в виду, что хотите использовать несколько версий jQuery на одной странице?
2. мой код вставляется на существующий сайт. таким образом, функции jquery, которые я использую, не зависят от существующего сайта и наоборот.
Ответ №1:
зарегистрируйте свой jQuery, если он не содержится на странице. смотрите пример.
<script type="text/javascript">
if (typeof jQuery == 'undefined') {
document.write(unescape(""));
}
</script>
Комментарии:
1. если сайт уже был зарегистрирован в jquery , если мы используем noConflict() , функции на сайте могут не работать. если мы используем $, может возникнуть конфликт.
2. если на сайте уже есть jQuery, вам не нужно беспокоиться о конфликте. потому что мы не регистрируем jQuery again.so если он конфликтует, он уже конфликтует. поэтому лучше использовать jQuery вместо $.
3. Лучшее решение, хотя я бы добавил
<script>
элемент к элементу head вместо использования document.write (как если бы это, например, запускалось из букмарклета, вы бы удалили все остальное содержимое сайта.4. Вы не регистрируете jQuery снова, но вы регистрируете jQuery в первую очередь. Если этот скрипт выполняется до загрузки «реального» jQuery, эта версия будет использоваться вместо версии, предусмотренной конструктором веб-сайта. Просто не делайте этого, не включайте jQuery из своих собственных сценариев.
Ответ №2:
Имейте в виду следующее:
- Не включайте jQuery из своего скрипта.
- Просто ожидайте, что jQuery будет включен. Разработчики веб-сайтов могут сделать это, когда они включают ваш скрипт.
- Не полагайтесь на
$
глобальную переменную. Ему не обязательно существовать, а если и существует, то ему не нужно указывать на jQuery. Именно для этого и предназначенnoConflict
метод.
Комментарии:
1. Если вы убедитесь, что не полагаетесь на глобальную
$
переменную, не имеет значения,noConflict
используется она или нет. Он всегда будет работать, если вы используетеJQuery
вместо$
.2. Это приведет к сбою, если сайт зависит от другой версии jQuery, а не от той, которая требуется плагину.
3. Затем исправьте плагин. Не успеете оглянуться, как у вас будет 10 версий jQuery, что сделает ваш сайт медленным и раздутым. Дело не в том, что разница между версиями jQuery настолько велика, что у вас возникнут большие проблемы с обновлением. Обычно вы можете обновиться без каких-либо проблем вообще, и если у вас есть проблемы, обновление самого кода в целом лучше, чем загрузка всей библиотеки дважды. Я не понимаю, почему люди даже рассматривают этот вариант.
Ответ №3:
var old_$ = window.$;
var old_jQuery = window.jQuery;
// load jQuery
(function($) {
// your script
})(jQuery);
window.$ = old_$;
window.jQuery = old_jQuery;
Комментарии:
1. Обертывание сценария в функцию — это способ использования сценариев, для которых требуется
$
переменная. Однако сохранение ссылок на jQuery в ‘старых’ переменных не должно быть необходимым. Ваш скрипт не должен изменять эти переменные.2. jQuery изменяет эти переменные в момент его загрузки. Вы могли бы использовать
$.noConflict(true)
для их восстановления, но так легче понять.