2012-06-16 2 views
0

Я получаю приведенную ниже ошибку (73TypeError) на небольшом сценарии фоновой анимации, когда включен в заголовок темы Wordpress, что нарушает сценарий. Я не вижу никакой ошибки, когда скрипт включен на не Wordpress странице:Wordpress breaks jQuery background animation script

enter image description here

Вот сценарий:

$(function() { 
    $(".bottom").hover(function() { 
     $(this).animate({ 
     backgroundPosition : '0px 35px'} 
     , 300); } 
    , function() { 
     $(this).animate({ 
     backgroundPosition : '0px 0px'} 
     , 600); } 
    ); 
    } 
); 

Может кто-то посоветовать на то, что вызывает эту ошибку?

Спасибо,

Ник

+3

Это потому, что jQuery не загружен. прочитайте это [wp_enqueue_script] (http://codex.wordpress.org/Function_Reference/wp_enqueue_script) – undefined

+0

oh, jQuery отображался в списке скриптов на странице, поэтому я предположил, что он был включен. Я добавил ' 'выше' wp_head(); 'в файле header.php для моей дочерней темы, и теперь я получаю ошибку' TypeError: 'undefined' не является функцией (оценка '$') 'в предпоследней строке выше сценарий – Nick

+0

щелкните по загруженному файлу jQuery в списке и проверьте, правильно ли он загружен. – undefined

ответ

1

Кулак прочь в WordPress, JQuery должен быть загружен не-конфликтный. Таким образом, в этом случае ваш файл должен быть;

var $j = jQuery.noConflict(); 

$j(function() { 
    $j(".bottom").hover(function() { 
     $j(this).animate({ 
     backgroundPosition : '0px 35px'} 
     , 300); } 
    , function() { 
     $j(this).animate({ 
     backgroundPosition : '0px 0px'} 
     , 600); } 
    ); 
    } 
); 

и во-вторых, как неопределенная упоминалось, вам необходимо загрузить JQuery с помощью wp-enqueue-script();

Для достижения этой цели, для достижения наилучших практик, поместите JQuery в отдельном файле. назовите его, например, bganimation.js

Теперь для загрузки этого js-файла в wordpress используйте wp-enqueue-script(); как это.

function this_is_jquery_example(){ 
wp_enqueue_script('jquery');; 
wp_enqueue_script('myscript', plugin_dir_url(__FILE__) .' bganimation.js'); 

} 
add_action('wp_enqueue_scripts','this_is_jquery_example'); 

надеюсь, что это поможет.

+0

Спасибо, это очень полезно. Как упоминалось выше в моем комментарии к undefined, я думал, что jQuery включен. Я выполнил ваши инструкции, и путь к bganimation.js, который я создал, неправильно настроен: 'http://soteriabrighton.co.uk/wp-content/plugins/home/nickputm/public_html/soteriabrighton.co .uk/wp-content/themes/bp-soteria/bganimation.js? ver = 3.4' – Nick

+0

Вы пытаетесь включить это прямо в тему или вы создаете плагин? –

+0

Я создал отдельный файл bganimation.js и поместил его в папку wp-content/plugins – Nick