Возможный конфликт jQuery при использовании bgStretcher - PullRequest
1 голос
/ 01 декабря 2011

Я настроил тестовую HTML-страницу, чтобы поиграть с bgStretcher, прежде чем добавить ее в пользовательскую тему Wordpress. Он отлично работает, когда я использую версию jQuery:

<script type="text/javascript" src="http://code.jquery.com/jquery-1.6.1.min.js"></script>

включен, но он перестает работать, когда я использую версию, включенную в Wordpress:

<script type="text/javascript" src="http://pebbl.es/test/wp-includes/js/jquery/jquery.js?ver=1.6.1"></script>

Единственное различие, которое я видел между этими двумя файлами, заключается в том, что версия WP предотвращает конфликты jQuery в конце, вызывая noConflict ().

Страница (html ниже) загружает первое изображение, но затем консоль выдает ошибку:

Uncaught TypeError: Невозможно прочитать свойство 'fn' из неопределенного (анонимная функция)

Включена живая версия: http://pebbl.es/test/test. Есть идеи, как это исправить? Я вижу, что это ошибка конфликта, но я не вижу, где и как это исправить? Большое спасибо.

<html>
<head><title>Test</title>
<script type='text/javascript' src='http://pebbl.es/test/wp-includes/js/jquery/jquery.js?ver=1.6.1'></script>
<script type="text/javascript" src="bgstretcher.js"></script>
<link rel="stylesheet" type="text/css" href="bgstretcher.css">

<script type="text/javascript">
    jQuery(document).ready(function($){
        jQuery('body').bgStretcher({
            images: ['Rochy_Coleccion1.jpg', 'Rochy_Coleccion2.jpg'], imageWidth: 1024, imageHeight: 748
        });
    });
</script>
</head>
<body>
</body>
</html>

1 Ответ

2 голосов
/ 01 декабря 2011

Пространство имен вашего jQuery: http://api.jquery.com/jQuery.noConflict/

добавьте это между двумя тегами сценария:

var $my_jq = jQuery.noConflict();

после этого у вас будет 1.6.1 jQuery в режиме без конфликтов.после этого вам придется вызывать его, используя имя переменной, например, $my_jq('#content')

ОБНОВЛЕНИЕ

это может не работать, я вижу, вы не загружаете 2 разных jQuerys, ваша проблема возникает при попытке использовать bgstretcher с jQuery, который уже находится в режиме noConflict.

Я не эксперт по WordPress, но вы можете просто изменить WordPress JQuery, чтобы использовать имя вашей переменной.Вы можете установить jQuery в режиме noConflict с пространством имен или без него для переменной, и похоже, что ваш WordPress JQ делает это без.Или вы можете сначала загрузить свой собственный jQuery, разместить его в пространстве имен, а затем использовать его для bgstretch.Проблема заключается в том, что вызов noConflict снова «освобождает» переменную $ для использования с различными средами, которые также хотят ее использовать, поэтому ваш bgstretch получает ошибку при попытке вызвать $.

Или просто попробуйтеПолностью удалите noConflict и посмотрите, не повлияет ли это на вашу установку WordPress (я полагаю, это не должно происходить только для того, чтобы дать пользователям WP возможность использовать различные JS-структуры).

НадеюсьВы решаете это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...