2016-06-24 5 views
-3

Я нашел эту функцию для учебника drupal. Может кто-нибудь объяснить мне, почему следующий javascript не работает в моей установке Wordpress и может дать мне решение?Javascript не будет работать

; 
(function ($) { 
"use strict"; 
    var $corn = $('.corn-anchor'); 
    $corn.each(function(idx, el) { 
    var $el = $(el); 
    $el.once('corn-animation', function() { 
     $(window).on('load', function() { 
     new Waypoint({ 
      element: el, 
      handler: function(direction) { 
      $el.toggleClass('corn-animated', (direction == 'down')); 
      }, 
      offset: '85%' 
     }); 
     }); 
    }); 
    }); 
}); 

Я хочу, чтобы использовать его для переключения некоторых разделов-оберток для анимации элементов в этих обертках с помощью CSS переходов с селектором .corn анимации. Я использую плагин waypoints. Я даже не получаю сообщение об ошибке в отладчике, но не добавляется toggleClass, когда я прокручиваю вниз до элемента с кукурузой-якорем класса.

+1

Вы объявляете анонимную функцию, даже не называя ее ?! –

+0

Да, кажется, очевидно, но я боюсь, я очень к этому знаком и просто пытаюсь научиться:/ – DoUtDes

ответ

4

Ничего не запускает код в функции. Глядя на него, последняя строка должна быть

})(jQuery); 
// ^^^^^^^^---- *call* the function, passing in `jQuery` 

не

}); 

Кроме того, убедитесь, что загружен на script тег в конце в HTML, непосредственно перед закрывающим </body> тег (и после тега script, который включает jQuery). В противном случае он запустится слишком быстро и не найдет никаких элементов .corn-anchor.

Если вы не контролируете, где сценарий заканчивается (так как вы используете Wordpress), вместо изменения последней строки, измените первый один:

jQuery(function ($) { 

Это вызывает jQuery, проходя в этой функции; jQuery будет вызывать функцию позже (передавая себя в качестве первого аргумента), когда HTML анализируется и DOM заполняется; это псевдоним для ready.

+0

Привет, T.J, большое вам спасибо за ваш ответ! Я использовал большую часть прошлой ночи, чтобы получить решение для этого и не смог заставить его работать. После использования jQuery (function) ($) {отладчик дал мне некоторые ошибки, мне пришлось изменить $ el.once ('corn-animation', function() {в $ el.each (function() {и voila, it работает! :) Можете ли вы объяснить мне, почему $ el.once («кукуруза-анимация», функция() не выполнили свою работу? Однако спасибо вам большое, спасибо большое! – DoUtDes

+0

@DoUtDes: '$ el. один раз («кукуруза-анимация», ... «подключает обработчик событий для события« кукуруза-анимация », который удаляет себя при первом запуске. Честно говоря, код не имеет большого смысла, поскольку то, что внутри он подключает обработчик для события 'load' на' window'. Это кажется очень странным для этого. –

+0

вы, вероятно, правы, так как мне пришлось его модифицировать (с вашей помощью) + его копировать из учебника drupal, где функция выглядит несколько иначе, так как они начинаются с Drupal.behaviors.name = { attach: function (context, settings) {мой опубликованный код ... Но с этими двумя строками код не может работать, потому что Wordpress не знает что-то вроде Drupal.behaviors.name – DoUtDes

Смежные вопросы