Конфликт Jquery


Я все пытаюсь и пытаюсь исправить проблемы с jquery. у меня в заголовке много jquery. Я использую его для слайдера и других вещей, встроенных в эту готовую тему. Я не могу добавить ничего, что использует jquery, из-за конфликта. мне нужна помощь. Правление является www.cgwhat.com . Забытый пароль - это jquery, и ползунок также управляется jquery. Я хотел добавить еще один плагин, но не могу из-за конфликта. Также с забытым паролем, который является jquery. Мне нужно знать, что не так и как это исправить. Если я удалю вызовы javascript в заголовке, это будет исправлено. Забытый пароль работает, но все остальное ломается.

<?php wp_enqueue_script("jquery"); ?>
<?php wp_head(); ?>

<script type="text/javascript" src="<?php bloginfo('template_url'); ?>/js/jquery.equalHeight.js"></script>
<script type="text/javascript" src="<?php bloginfo('template_url'); ?>/js/flashobject.js"></script>
<script type="text/javascript" src="<?php bloginfo('template_directory'); ?>/js/jquery.js"></script>
<script type="text/javascript" src="<?php bloginfo('template_directory'); ?>/js/jquery.jcarousel.js"></script>
<script type="text/javascript" src="<?php bloginfo('template_directory'); ?>/js/jquery.actions.js"></script>
<script type="text/javascript">
 jQuery(document).ready(function($){
var fC=$('#features-nav .features-nav-item').length;
curS=1;
var cInt=0;
    cInt=setInterval(function(){
        $('#features-nav .features-nav-item:eq('+curS+')').addClass('current').trigger('click');
        curS++;
        if(curS>=fC) curS=0;
    },10000);});

</script> 



</head>
Author: mmoore5553, 2011-08-02

2 answers

По крайней мере, одна проблема, которую я вижу, заключается в том, что вы включаете фреймворк jQuery по крайней мере дважды. Первая строка

<?php wp_enqueue_script("jquery"); ?>

Является предпочтительным методом включения jQuery. Ваша установка WordPress включает версию jQuery 1.4.2. Это позволяет хорошим разработчикам плагинов и тем использовать jQuery и не включать его случайно вручную несколько раз.

Но у вас также есть (в строке 6)

<script type="text/javascript" src="<?php bloginfo('template_directory'); ?>/js/jquery.js"></script>

, который включает jQuery 1.2.6. Возможно, один из ваших плагинов пытаешься ввести это? Или, возможно, это сгенерировано в вашей теме (в этом случае вы можете удалить ее, предполагая, что ваши плагины совместимы со встроенной версией jQuery версии 1.4.2.

После устранения этой проблемы любые дальнейшие ошибки javascript могут быть изолированы для определенного скрипта или плагина.

РЕДАКТИРОВАТЬ: Дополнительная информация...

Теперь, когда вы удалили дополнительный jquery, появилась другая ошибка. С помощью Firebug или отладчика Chrome или ваш другой любимый отладчик JavaScript, вы можете видеть, что новая ошибка:

$ is not a function (jquery.actions.js, line 18)

Это означает, что вы пытаетесь использовать селектор сокращений jQuery, но завернули готовый документ, используя полный синтаксис имени объекта "jQuery".

В jquery.actions.js, замените каждую ссылку "$" на "jQuery".

Это заставит ваш слайдер работать. Но вы также заметите, что в вашем JavaScript есть и другие ошибки...

pos is null (undo.js, line 367)

threads[x] is undefined (_display, line 915)

Вас могут волновать или не волновать эти ошибки в зависимости от того, как они влияют на ваш сайт. Я склонен устранять любые ошибки для повышения производительности и стабильности. Некоторые браузеры будут работать хуже, чем другие.

 3
Author: Jared Cobb, 2011-08-02 19:48:24

Две вещи:

  1. Призыв к wp_head() должен появиться немедленно перед закрывающим тегом </head>.
  2. Вместо жесткого кодирования ссылок на сценарии вы должны ставить в очередь все сценарии, включая любые необходимые зависимости.
  3. Вместо жесткого кодирования пользовательского сценария поместите его в файл сценария, напримерcustom.js, и также поставьте его в очередь
  4. Каскадируйте ваши сценарии в очереди по мере необходимости, используя аргумент $deps, чтобы обеспечить чтобы все загружалось в правильном порядке.

Например, удалите все вызовы скрипта из заголовка документа, а затем добавьте следующее в functions.php:

function mytheme_enqueue_scripts() {
    $scriptsrc = get_template_directory_uri() . '/js/';
    wp_enqueue_script( 'jquery' );
    wp_enqueue_script(
        'flashobject',
        $scriptsrc . 'flashobject.js'
    }
    wp_enqueue_script(
        'equalheight',
        $scriptsrc . 'jquery.equalHeight.js',
        array( 'jquery' )
    }
    wp_enqueue_script(
        'jquerycarousel',
        $scriptsrc . 'jquery.carousel.js',
        array( 'equalheight' )
    }
    wp_enqueue_script(
        'jqueryactions',
        $scriptsrc . 'jquery.actions.js',
        array( 'carousel' )
    }
    wp_enqueue_script(
        'custom',
        $scriptsrc . 'custom.js',
        array( 'actions' )
    }
}
add_action( 'wp_head', 'mytheme_enqueue_scripts' );

Это должно решить любые проблемы, возникающие у вас с конфликтами сценариев/библиотек.

Затем вам нужно будет убедиться, что вы правильно используете обертки без конфликтов jquery.

 2
Author: Chip Bennett, 2011-08-02 20:01:20