Конфликт между двумя скриптами jQuery - PullRequest
1 голос
/ 26 апреля 2011

Я испанец (извините за мой английский), и я впервые пишу здесь, чтобы спросить что-то.

После нескольких часов отладки и поиска причин, по которым скрипт Fancybox не работал, я ищу конфликт между двумя скриптами на моем веб-сайте (теперь в режиме Maintence)

Я использую несколько скриптов на своем сайте, но могу с уверенностью сказать, что у меня конфликт между этими двумя скриптами:

http://www.planetdescargas.com/wp-content/themes/bigfoot/javascripts/jquery.mousewheel-3.0.4.pack.js    
http://www.planetdescargas.com/wp-content/themes/bigfoot/javascripts/jquery.fancybox-1.3.4.pack.js

И

http://www.planetdescargas.com/wp-content/plugins/buddypress/bp-themes/bp-default/_inc/global.js?ver=3.0.5

Первые два скрипта - это плагин для jquery " fancybox ", другой - основной javascript (Ajax) для плагина wordpress: BuddyPress.

Последний создает конфликт в fancybox. Если я удаляю скрипт BuddyPress, fancybox работает отлично, но если нет, то fancybox не работает.

Сценарий BuddyPress, global.js имеет переменную, определенную в начале, которая является той, которая создает скрипт. Я пытаюсь определить это так:

var jq = jQuery.noConflict ();

Но все еще не работает.

Есть предложения?

В консоли Firebug я получил это:

c.easing[this.options.specialEasing && this.options.specialEasing[this.prop] || a] is not a function

[ошибка получателя] e, this.options.orig [e]); this.options.c ... ++) ab || a.splice (b -, 1); a.length | |

Строка 143

http://www.planetdescargas.com/wp-includes/js/jquery/jquery.js?ver=1.4.2

Спасибо

Ответы [ 3 ]

3 голосов
/ 07 апреля 2012

Просто используйте этот способ.

Откройте wp-content/plugins/buddypress/bp-themes/bp-default/_inc/global.js

Добавить сверху:

jQuery.noConflict (jquery_working =! html bind);

Перейти к строке # 1264
Добавьте это ниже:

;(function(jQuery){  ///Add this before start jQuery.easing.
  jQuery.easing.jswing=jQuery.easing.swing;jQuery.extend(jQuery.easing, {def:"easeOutQuad",swing:function(e,f,a,h,g){return ......
  // ...
})(jQuery); //Add this end of the call.

Аналогичным образом вы можете устранить ошибку конфликта плагинов Cookie jQuery.

1 голос
/ 26 апреля 2011

Это не так, как вы используете jQuery.noConflict().noConflict() освобождает контроль над символом $.Из того, что я вижу из ваших других скриптов, они используют безопасный способ ((function($){ }(jQuery))), поэтому использование noConflicts() не имеет никакого действительного эффекта.

Измените это

var jq = jQuery.noConflict ();

на это:

jQuery.noConflict ();
var jq = jQuery;

Чтобы убедиться.

Документация: http://api.jquery.com/jQuery.noConflict/

0 голосов
/ 26 апреля 2011

Я не знаю, что случилось, но я решил проблему.Я использую этот код в файле functions.php в корне темы:

    function fancybox_js() {
            wp_enqueue_script('jquery.fancybox', 'http://www.planetdescargas.com/wp-content/themes/bigfoot/javascripts/fancybox/jquery.fancybox-1.3.4.pack.js', array('jquery'), '1.3.4');
            wp_enqueue_script('jquery.easing', 'http://www.planetdescargas.com/wp-content/themes/bigfoot/javascripts/fancybox/jquery.easing-1.3.pack.js', array('jquery'), '1.3');
            wp_enqueue_script('jquery.mousewheel', 'http://www.planetdescargas.com/wp-content/themes/bigfoot/javascripts/fancybox/jquery.mousewheel-3.0.4.pack.js', array('jquery'), '3.0.4');
    }

add_action('wp_enqueue_scripts', 'fancybox_js', 999); 

Я взял библиотеки из плагина WordPress под названием Easy Fancybox , и теперь все работает нормально.Спасибо!

...