Как разрешить конфликт jquery с другой библиотекой

#javascript #jquery

#javascript #jquery

Вопрос:

 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>


<meta http-equiv="Content-Type" content="text/html; charset=utf-8">


<script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script>
<link rel="stylesheet" href="../../fancybox/source/jquery.fancybox.css?v=2.1.5" type="text/css" media="screen" />
<script type="text/javascript" src="../../fancybox/source/jquery.fancybox.pack.js?v=2.1.5"></script>
<script type="text/javascript" src="../../js/cufon-yui.js"></script>
<script type="text/javascript" src="../../js/TitilliumText.font.js"></script>
<script type="text/javascript" src="../../js/cufon-replace.js"></script>
<script type="text/javascript" src="../../js/shortcode.js"></script>
<script type="text/javascript" src="../../js/scripts.js"></script>
<script type="text/javascript" src="../../js/custom.js"></script>

</head>
...
<script type="text/javascript">
$(document).ready(function() {
$(".fancybox").fancybox();
});
</script>
</body>
  

Потерпите меня, поскольку я довольно новичок в веб-разработке и только что попал в этот проект.

Я внедряю fancybox, для которого требуется загрузка jQuery. Однако, похоже, существует какой-то конфликт с scripts.js и custom.js , поскольку, когда я включаю их, fancybox не работает. К сожалению, мне нужно включить оба этих скрипта.

Я пытался использовать jQuery.noConflict(); в нескольких местах, но безрезультатно. Я не уверен, куда идти дальше

Вот два файла problem .js (если это необходимо).

custom.js:

http://pastebin.com/SBqGXAqR

scripts.js:

http://pastebin.com/fz1GhaSH

Комментарии:

1. Какие ошибки вы получаете в консоли javascript? (F12)

2. «Не работает» не является полезным описанием проблемы.

3. Консоль не показывает ошибок.

4. Не работает, поскольку ожидаемое поведение при открытии фотографии в «лайтбоксе» не происходит. он просто открывает фотографию как внешнюю ссылку. это ничего не делает

Ответ №1:

проверьте это

http://api.jquery.com/jquery.noconflict/

и будьте осторожны с другими библиотеками, которые используют такие держатели, как «$» jquery

если вы реализуете noConflict, вам нужно вызывать функции jquery следующим образом

 jQuery(document).example();
  

Ответ №2:

Вызовите jQuery.noConflict() перед загрузкой custom.js или добавьте его в начало файла, а затем измените каждый

 $(document).ready(function(){
  

Для

 jQuery(document).ready(function(){
  

Внутри этих функций вы можете использовать $, как обычно

Ответ №3:

Fancybox — это плагин jQuery, документированный для работы с $ селектором. Вы должны удалить все jQuery.noConflict() вызовы, поскольку они потребуют изменения каждого использования $ во всех ваших сценариях.

Вы проверили консоль javascript на наличие ошибок?

Если в консоли нет информации, то выявить проблему будет намного проще, если сначала сузить объем кода, который может быть ответственным. Убедитесь, что Fancybox работает при удалении обоих scripts.js и custom.js , затем проверьте, работает ли он только с custom.js удаленными. Как только вы определите ответственный файл, закомментируйте нижнюю половину модулей в ответственном файле и проверьте еще раз. Продолжайте добавлять половину модулей обратно и перепроверять, пока не найдете модуль, который вызывает проблему.