Uncaught error syntax error unrecognized expression a href

One of updates included into WordPress 4.5 is jQuery 1.12.3 replaced jQuery 1.11.3. Cool! But there is a known issue with older JavaScript code. If your plugin or theme contains code snippet like one below, you will get error message: “Uncaught Error: Syntax error, unrecognized expression: a[href=#scroll-top]” jQuery(document).ready(function ($) { $('a[href=#scroll-top]').click(function () { $('html, body').animate({ […]

JavaScript Error

JavaScript Error

One of updates included into WordPress 4.5 is jQuery 1.12.3 replaced jQuery 1.11.3. Cool!
But there is a known issue with older JavaScript code. If your plugin or theme contains code snippet like one below, you will get error message:
“Uncaught Error: Syntax error, unrecognized expression: a[href=#scroll-top]”

jQuery(document).ready(function ($) {
	$('a[href=#scroll-top]').click(function () {
		$('html, body').animate({
			scrollTop: 0
		}, 'slow');
		return false;
	});
});

This code belongs to “jQuery Scroll Top Plugin” and included into the verson 0.0.8 of “Responsive Mobile” theme package from CyberChimps in my case.

How to fix this bug?

The best way to resolve this and similar issues is:
1) update to the latest version of a product.
2) if problem was not resolved after update, contact plugin or theme developer with a support request.
3) if you can not get a valuable answer from developer in a meaning time, follow recommendations below:

The source of this problem is that starting from jQuery 1.12 it’s a requirement to enclose any CSS, HTML selector, like this href=#scroll-top to the pair brackets. In our case as a single quotes are used already in this expression, we should use a double quote, like this 'a["href=#scroll-top"]'.
Full version of the fixed code should be looked this way finally:

jQuery(document).ready(function ($) {
	$('a[href="#scroll-top"]').click(function () {
		$('html, body').animate({
			scrollTop: 0
		}, 'slow');
		return false;
	});
});

This trivial update fixes the error and problem.

Source of the information: https://github.com/jquery/jquery/issues/2824

This small and simple fix allows you to update your WordPress to the latest 4.5 and do not wait while your theme or plugin developer publish its own fix to provide compatibility with the jQuery 1.12.x.

Divi theme

Divi theme version 2.6.4.1 has the similar problem compatibility problem with jQuery v. 1.12.
It shows this error at the browser JavaScript console after update to WordPress 4.5:

jquery.js?ver=1.12.3:2 Uncaught Error: Syntax error, unrecognized expression: a[href*=#]:not([href=#])

Divi Version 2.7.3 ( updated 04-13-2016 ) fixes the jQuery issue outlined below. Update your theme.

If you can not update to the latest version, fix this bug yourself:

Open file: wp-content/themes/Divi/js/custom.js
Go to line #706

$( 'a[href*=#]:not([href=#])' ).click( function() {

and enclose # character with double quotes, like this

$( 'a[href*="#"]:not([href="#"])' ).click( function() {

It fixes a JavaScript error which prevented jQuery code execution.

Other themes or plugins

General scenario to find a source of errors of this kind by your own hands:

Make a context search of your theme/plugin JavaScript files for the occurrence of this key
[href
and look if some of them don’t uses quotes after = sign.

To be more exact use as a search key a copy of unrecognized expression from the error message at the browser JavaScript console.

Edit those places adding pair quotes like we did in examples above.

WordPress support team published this resource resource for known compatibility problem with WordPress 4.5:
https://wordpress.org/support/topic/read-this-first-wordpress-45-master-list


This entry was posted
on Thursday, April 14th, 2016 at 02:25 and is filed under WordPress, WordPress hints, advices.
You can follow any responses to this entry through the RSS 2.0 feed.
You can skip to the end and leave a response. Pinging is currently not allowed.

Содержание

  • 1 Ключи безопасности
  • 2 Дочерняя тема
  • 3 Пишем плагин
  • 4 Сделать так, чтобы на главной странице выводилась статичная страница (Page)
  • 5 Шаблон страницы
  • 6 Вставляем меню
  • 7 Определяем тип страницы
    • 7.1 главная страница
  • 8 Перевод темы
  • 9 Вывод вместо поста шести миниатюр первых шести картинок в этом посте
  • 10 Защита почтовой ссылки
  • 11 Шорткоды
    • 11.1 Примеры кода
  • 12 Восстановление пароля
  • 13 Flash перекрывает элементы страницы (фото, меню…)
  • 14 Оптимизация
    • 14.1 Hyper Cache
    • 14.2 Использование функции Flush НЕ ДЕЛАЙТЕ ТАК НЕ РАБОТАЕТ КЭШ ПЛАГИНЫ
    • 14.3 Количество запросов к базе
  • 15 Поиск по страницам
  • 16 Карта сайта
    • 16.1 Решение конфликта Dagon Design Sitemap Generator и qTranslate
    • 16.2 Убираем часть html кода для IE
    • 16.3 Число ревизий (редакций)
    • 16.4 Allow Javascript in Posts and Pages
    • 16.5 Голосование плагин WP-Polls
  • 17 Отключение скрипта wp-cron.php
  • 18 Javascript и jQuery
    • 18.1 Подключение своего js скрипта
    • 18.2 Uncaught TypeError: undefined is not a function
    • 18.3 Передача переменных из WP скрипту
  • 19 Глюки IE8
  • 20 Strict Standards: Declaration of … should be compatible with ..
  • 21 Плагины безопасности
  • 22 Видео
  • 23 Ошибки
    • 23.1 Ошибка js Uncaught Error: Syntax error, unrecognized expression: a[href^=#]

Ключи безопасности

Поменять ключи безопасности в файле wp-config.php можно здесь

Дочерняя тема

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

Пишем плагин

Написание плагина.

Ninja Forms WordPress — мой пример дочернего плагина.

Сделать так, чтобы на главной странице выводилась статичная страница (Page)

Для этого находим начало цикла (loop) в файле index.php или home.php темы (или что у вас там есть), строка вида:

<?php while (have_posts()) : the_post(); ?>

И перед ней вставляем строку:

<?php query_posts('page_id=1'); ?>

где 1 — id требуемой страницы
или строку вида:

<?php query_posts('pagename=myhome'); ?>

где myhome — имя требуемой страницы
Подробности тут.

Шаблон страницы

Копируем в шаблоне файл страницы например /wp-content/themes/имя_темы/page.php и называем например /wp-content/themes/имя_темы/pagemy.php
вставляем в начало:

<?php
/*
Template Name: My Page
*/
?>

теперь появилась возможность менять шаблон страницы в админке.

Вставляем меню

Используем функцию wp_nav_menu, например так:

<?php wp_nav_menu('menu=Menu&container=&menu_class=sf-menu sf-js-enabled'); ?>

Читаем тут.

Определяем тип страницы

главная страница

if (is_home()){
 echo "Вместо echo ставим, что хотим видеть на главной странице";
}

ВНИМАНИЕ!!! WordPress меняет тип страницы, после использования query_posts!!!

Для того что бы этого избежать используем следующую конструкцию:

$is_home = is_home();
..............
if  ($is_home) { echo "Вместо echo ставим, что хотим видеть на главной странице"; }

Если требуется использовать в разных файлах, то еще меняем конструкцию:
Самый первый файл, например index.php или header.php:

global $is_home;
$is_home = is_home();

Там где требуется, например sidebar.php:

global $is_home;
if  ($is_home) { echo "Вместо echo ставим, что хотим видеть на главной странице"; }

Перевод темы

Для поиска русских слов выполним в каждой папке:

egrep -i "([а-я]* *)*" -o -h -r ./*.php | grep -v "^ *$" | sed "s/^ *//" | sed "s/ *$//" | sort | uniq

Для поиска файлов содержащие русские слова выполним в каждой папке:

egrep -i [а-я] -r ./*.php

Для перевода темы мы должны найти все строки которые мы хотим перевести и заменить требуемую строку <строка> на конструкцию вида:
внутри php блока:

__('<строка>', 'themename-theme')

вне php блоков:

<?php _e('<строка>', 'themename-theme'); ?>

themename-это название темы.

  • Затем устанавливаем программу Poedit.
  • Запускаем poedit. Затем Файл -> Создать каталог
  • На первой вкладке Информация о проекте главным образом выбираем правильную кодировку, остальное на своё усмотрение.
  • На второй вкладке Пути указываем путь к папке с исходным кодом темы (для ускорения процесса, можно скопировать только структуру папок содержащих php-файлы и сами php-файлы в произвольную папку на собственном компьютере), добавляем путь (кнопка «Новый путь») в который ставим точку («.» — текущая директория)
  • Ключевые слова — добавляем:
__
_e
  • Нажимает Ок.
  • После того как программа просканирует каталог выдаст список исходных строк, сохраним «Сохранить как» в папку например language, если тема была на английском, то назовем файл en_US.po и получим два файла en_US.mo и en_US.po. Затем переведем все строки и сохраним «Сохранить как», если переводили на русский, то назовем ru_RU.po.
  • Теперь копируем папку language в корневую папку нашей темы.
  • В корневой папке темы находится файл functions.php, добавляем в его начало:
load_theme_textdomain('themename-theme', get_template_directory() . '/language');

themename-theme — это то, что мы указывали в «__» и «_e».

Вывод вместо поста шести миниатюр первых шести картинок в этом посте

Меняем нечто подобное:

<p><?php the_content(); ?></p>

На:

<p>
 <?php
 $szPostContent = $post->post_content;
 $szSearchPattern = '/<img.+src="(.+.jpg)".*>/i';
 // Запускаем preg_match_all для сохранения всех изображений в $aPics
 preg_match_all( $szSearchPattern, $szPostContent, $aPics );
 // Проверяем на количество
 $iNumberOfPics = count($aPics[0]);
 if ( $iNumberOfPics > 0 ) {
 //Вывод изображения
     for ( $i=0; (($i < $iNumberOfPics)&&($i < 6)) ; $i++ ) {
          echo "<img src="". $aPics[1][$i] . "" style="height: 100px; margin: 8px;">";
     };
 };
 ?>
 </p>

Защита почтовой ссылки

<script language="JavaScript">
var login  = 'mymaillog';
var server = 'mydomain.ru';
var email  = login+'@'+server;
var url = 'mailto:'+email;
document.write('<a href="'+url+'">'+email+'</a>');
</script>

Шорткоды

Вызов коротких вставок прямо из текста блога. Оформляется в квадратных скобках:

[mailto]E-mail[/mailto]

Результатом может служить например такой кусок кода в html:

<p class="email">
  <script language="JavaScript">	
   var login  = ''.$email_name.'';
   var server = ''.$email_doman.'';
   var email  = login+'@'+server;
   var url = 'mailto:'+email;
   document.write('<a href="'+url+'">'+email+'</a>');
  </script>
 </p>

Берем здесь: http://codex.wordpress.org/Shortcode_API

Примеры кода

Пример шорткода поддерживающий вложение других шорткодов (этот вкладывать нельзя)
Этот шорткод выводит содержимое в зависимости от времени в требуемом часовом поясе.

//[time_show_shortcode hour_start="9" hour_stop="10"]My block[/time_show_shortcode]
function time_show_shortcode_func( $atts, $content = null ) {
  extract( shortcode_atts( array(
     'hour_start' => ,
     'hour_stop' => ,
     ), $atts ) );

 //один из параметров не задан
 if ( $hour_start == "" || $hour_stop=="" ) { return ; }

 //Переменные в цыйфры
 $hour_start=(int)$hour_start;
 $hour_stop=(int)$hour_stop;

 //Получаем текущий час
 date_default_timezone_set('Asia/Novosibirsk'); 
 $hour = date('G');
 
 //час начала периода меньше или равен часу окончания
 if ( ( $hour_start <= $hour_stop ) && ( $hour_start <= $hour && $hour <= $hour_stop ) ) { return do_shortcode($content); }
 
 //час начала периода больше или равен часу окончания (например 23 - 4)
 if ( ( $hour_start > $hour_stop ) && ( $hour_start <= $hour || $hour <= $hour_stop ) ) { return do_shortcode($content); }

  return ;
}
add_shortcode( 'time_show_shortcode', 'time_show_shortcode_func' );

Восстановление пароля

http://codex.wordpress.org/%D0%A7%D0%90%D0%92%D0%9E/%D0%92%D0%BE%D1%81%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BF%D0%B0%D1%80%D0%BE%D0%BB%D1%8F

Flash перекрывает элементы страницы (фото, меню…)

Решение:

Было:

<object style="height: 390px; width: 640px">
<param name="movie" value="http://www.youtube.com/v/4diwpZmc0bU">
<param name="allowFullScreen" value="true">
<param name="allowScriptAccess" value="always">
<embed src="http://www.youtube.com/v/4diwpZmc0bU"
type="application/x-shockwave-flash" allowfullscreen="true"
allowScriptAccess="always" width="640" height="360">
</object>

Надо поменять:

<object style="height: 390px; width: 640px">
<param name="wmode" value="opaque">
<param name="movie" value="http://www.youtube.com/v/4diwpZmc0bU">
<param name="allowFullScreen" value="true">
<param name="allowScriptAccess" value="always">
<embed wmode="opaque" src="http://www.youtube.com/v/4diwpZmc0bU"
type="application/x-shockwave-flash" allowfullscreen="true"
allowScriptAccess="always" width="640" height="360">
</object>

Оптимизация

Hyper Cache

Используйте плагин Hyper Cache, очень ускоряет работу WP

Для того что бы ускорить работу плагина с IIS надо добавить в «Кэширование выводимых данных»:

Расширение имени файла: .dat 
Кэширование в режиме пользователя x
Кэширование в режиме ядра x

Использование функции Flush НЕ ДЕЛАЙТЕ ТАК НЕ РАБОТАЕТ КЭШ ПЛАГИНЫ

При обращении пользователя к сайту, конечному серверу время, чтобы полностью загрузить страницу. Все это время окно браузера остается пустым, ожидая получения информации. В PHP имеется функция flush(), которая позволяет загружать полученную с сервера информацию по частям, и она постепенно будет отображаться в окне браузера, пока остальная информация все еще загружается с сервера. Это особенно актуально для сильно загруженных конечных серверов или сложного интерфейса.

Размещать эту функцию лучше всего сразу после HEAD, так как HTML-контент заголовка обычно легче всего открыть, кроме того, в него можно добавить файлы CSS и JavaScript, которые будут загружаться параллельно с остальным контентом страницы.

Пример:

... 
</head>
<?php flush(); ?>
<body>
... 

Проведенные Yahoo! исследования демонстрируют высокую эффективность данного метода оптимизации.

Количество запросов к базе

В footer.php добавить:

<?php echo get_num_queries(); ?> queries in <?php timer_stop(1); ?> seconds.
</body>

Поиск по страницам

Находим в файле search.php темы строки вида:

$args=array(
  'post_type' => array('post','news', 'media'),
  's' => $s,
  'post_status' => 'publish',
  'paged' => $paged
);

Перед:

$wp_query = new WP_Query($args);

И меняем на:

$args=array(
  'post_type' => array('page', 'post','news', 'media'),
  's' => $s,
  'post_status' => 'publish',
  'paged' => $paged
);

Карта сайта

Плагин Dagon Design Sitemap Generator берем здесь.

вставляем в страницу карты сайта:

<!-- ddsitemapgen -->

Если надо вставить в шаблон то:

<?php echo ddsg_create_sitemap(); ?>

Решение конфликта Dagon Design Sitemap Generator и qTranslate

Меняем в файле sitemap-generator/sitemap-generator.php строку:

$the_title = htmlspecialchars(trim($page_data[$p]['title']));

на

$the_title = htmlspecialchars(trim(__($page_data[$p]['title'])));

а строку:

$the_title = htmlspecialchars(trim($post_data[$p]['title']));

на

$the_title = htmlspecialchars(trim(__($post_data[$p]['title'])));

Убираем часть html кода для IE

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

Например уберем для IE6 надпись:

<!--[if gt IE 6]><!--> 
 IE6 - отстой!
<!-- <![endif]-->

Для всех версий IE:

<!--[if !IE]><!--> 
 Все IE - отстой!
<!-- <![endif]-->

Число ревизий (редакций)

Для запрета создания ревизий в файл wp-config.php добавляем:

define('WP_POST_REVISIONS', false);

Если нужно просто изменить их количество (по умолчанию 25) в файл wp-config.php добавляем:

define('WP_POST_REVISIONS', 3);

Allow Javascript in Posts and Pages

Никаких настроек в плагине нет. Чтобы вставить нужный javascript в запись достаточно заключить текст этого скрипта в теги [js] и [/js] в место <script type=»text/javascript»> и </script>.

Пример:

[js]
function time() {
   var time=new Date();
   document.clock.date.value=time.toLocaleString();
   setTimeout('fulltime()',500)
}
time();
[/js]

Голосование плагин WP-Polls

В текущей версии 2.64 не работает с Hyper Cache, решение не очень красивое, но работает. В файле wp-polls/wp-polls.php ищем строки :

// Display Poll Voting Form

$temp_pollvote .= «

n»;

и добавляем

$temp_pollvote .= "<a href="#ViewPollResults" onload="poll_result(".$poll_question_id."); return false;"></a>n";

Тем самым заставляем в любом случае показать режим голосования

И еще ищем

} else {
        printf(__('You Had Already Voted For This Poll. Poll ID #%s', 'wp-polls'), $poll_id);

и меняем на

} else {
        echo display_pollresult($poll_id, 0, false);

В случае если человек голосовал, то просто выводим результаты

Также убираем кусок кода

// Verify Referer
/* if(!check_ajax_referer('poll_'.$poll_id.'-nonce', 'poll_'.$poll_id.'_nonce', false))
                {
			_e('Failed To Verify Referrer', 'wp-polls');
			exit();
		}
*/

Отключение скрипта wp-cron.php

Бывает, что встроенный cron дает большую нагрузку, если вы его не используете, то можно его отключить добавив в файл wp-config.php строку:

define(‘DISABLE_WP_CRON’, true);

Javascript и jQuery

Подключение своего js скрипта

Если скрипт зависит от других скриптов. Читать тут. А тут еще примеры.

Мой пример:

#Подключаем скрипт масштабирования карты 
function rwdImageMaps_enqueue_scripts(){
	if ( is_home() ) {
		wp_register_script( 'rwdImageMaps', get_template_directory_uri() . '/js/jquery.rwdImageMaps.min.js', array( 'jquery' ), '1.10', true );
		wp_enqueue_script( 'rwdImageMaps' );
	}
}
add_action('wp_enqueue_scripts', 'rwdImageMaps_enqueue_scripts');

Вкратце:

  1. is_home() — этот нужен только на главной. Можно is_single(), is_admin() и т.д. можно использовать отрицание !is_admin() не в админке.
  2. rwdImageMaps — имя которое мы присваиваем скрипту
  3. get_template_directory_uri() . ‘/js/jquery.rwdImageMaps.min.js’ — путь до скрипта
  4. array( ‘jquery’ ) — массив скриптов от которых зависит этот скрипт (здесь от jquery)
  5. 1.10 — текущая версия скрипта
  6. true — поместить скрипт в footer, если false то в header.

Uncaught TypeError: undefined is not a function

После обновления jQuery стала появляться ошибка в скриптах:

 Uncaught TypeError: undefined is not a function

Поменялся синтаксис, решение, конструкцию вида:

$(document).ready(function () {

меняем на:

jQuery(document).ready(function () {

меняем везде.

Еще вариант, в начале скрипта добавляем:

var $=jQuery.noConflict();

Передача переменных из WP скрипту

[1]

Например надо передать путь темы, в function.php:

wp_register_script( 'my-script', 'myscript_url' );
 wp_enqueue_script( 'my-script' );
 $translation_array = array( 'templateUrl' => get_stylesheet_directory_uri() );
 //after wp_enqueue_script
 wp_localize_script( 'my-script', 'object_name', $translation_array );

В скрипте можно использовать:

var templateUrl = object_name.templateUrl;

Глюки IE8

Выяснился забавный глюк IE8 слетали горизонтальные меню и были другие проблемы в верстке когда в html-документе в начале первой строки перед

<!DOCTYPE html>

были непечатаемые символы которые нигде не было видно. IE8 не ругался, просто работал некорректно.

Оказалось, что символы случайно были в начале php-файла подключаемого через functions.php. Символы были до <?php Очень долго искал  :)

Strict Standards: Declaration of … should be compatible with ..

Обновил WP и вылезла ошибка «Strict standards: Declaration of topmenu_walker::start_el() should be compatible with Walker_Nav_Menu»

Ищем в теме строку:

function start_el(&$output, $item, $depth, $args)

меняем на:

function start_el(&$output, $item, $depth = 0, $args = array(), $id = 0)

А строку

$output .= apply_filters( 'walker_nav_menu_start_el', $item_output, $item, $depth, $args);

меняем на:

$output .= apply_filters( 'walker_nav_menu_start_el', $item_output, $item, $depth, $args, $id );

Нашел на форуме.

Плагины безопасности

  1. Самый простой плагин контроля изменения файлов WordPress File Monitor
  2. Ограничение попыток авторизации Limit Login Attempts

Видео

Для вставки видео используем шорткод:


Видео файл должен быть на сервере.

Ошибки

WP может обновится или поставить тему и т.п. требует логин пароль FTP. Решаем:

Для начала попробуем запретить использовать ftp, в файл wp-config.php добавим:

/** no ftp updating plugins*/
define('FS_METHOD', 'direct');

пробуем, и видим ошибку:

An error occurred while updating twentythirteen: Download failed.
Could not open handle for fopen() to /tmp/twentythirteen.1.6.tmp

Видим, что нас хостинг не пускает в свою /tmp директорию, ок поменяем на свою, для этого добавим строки, убрав строики из предыдущего примера:

/** Зададим tmp дерикторию */
define( 'WP_TEMP_DIR' , ABSPATH . 'wp-content/tmp/' );

Создаем на хостинге директорию:

wp-content/tmp/ 

Наслаждаемся  :)

Ошибка js Uncaught Error: Syntax error, unrecognized expression: a[href^=#]

После обновления jQuery до версии 1.12.3 (WordPress 4.5) Перестали работать Tabs и появилась ошибка: Uncaught Error: Syntax error, unrecognized expression: a[href^=#]

Как выяснилось поменялся синтаксис и теперь в место $(‘a[href^=http://]’) надо использовать $(‘a[href^=»http://»]’)

Так как у меня в теме используется jquery.tools.min.js (jQuery Tools v1.2.6), то нашел и заменил следующие строки:

panes.find("a[href^=#]").unbind("click.T");

Заменил на

panes.find('a[href^="#"]').unbind("click.T");

а

panes.find("a[href^=#]").bind("click.T", function (e) {

на

panes.find('a[href^="#"]').bind("click.T", function (e) {

Все заработало.

This has been troubling me over the past few hours and I just can’t find the solution. I’m trying to include a link in my a href but jQuery gives me the following error:

Uncaught Error: Syntax error, unrecognized expression: http://www.google.com

I’m using the latest jQuery 1.12.0 but I’m working in codeIgniter and anything resembling an url gets rejected by jQuery in a href which is something I’ve never seen before.

<li class="dropdown">
    <a href="#our-team" class="dropdown-toggle" data-toggle="dropdown" data-hover="dropdown">Over ons <b class="caret"></b></a>
            <ul class="dropdown-menu">

               <li><a tabindex="-1" href="http://www.google.com">Geschiedenis</a></li>
               <li><a tabindex="-1" href="#b">Onze doel</a></li>
               <li><a tabindex="-1" href="#c">Prestaties</a></li>
            </ul>
</li>

Anyone knows what the cause might be and how I can solve this?

EDIT added javascript:

jQuery(document).ready(function($) {

'use strict';


/************** Toggle *********************/
// Cache selectors
var lastId,
    topMenu = $(".menu-first"),
    topMenuHeight = topMenu.outerHeight()+15,
    // All list items
    menuItems = topMenu.find("a"),
    // Anchors corresponding to menu items
    scrollItems = menuItems.map(function(){

      if($(this).hasClass('external')) {
        return;
      }

      var item = $($(this).attr("href"));
      if (item.length) { return item; }
    });

// Bind click handler to menu items
// so we can get a fancy scroll animation
menuItems.click(function(e){
  var href = $(this).attr("href"),
      offsetTop = href === "#" ? 0 : $(href).offset().top-topMenuHeight+1;
  $('html, body').stop().animate({ 
      scrollTop: offsetTop
  }, 300);
  e.preventDefault();
});

// Bind to scroll
$(window).scroll(function(){
   // Get container scroll position
   var fromTop = $(this).scrollTop()+topMenuHeight;

   // Get id of current scroll item
   var cur = scrollItems.map(function(){
     if ($(this).offset().top < fromTop)
       return this;
   });
   // Get the id of the current element
   cur = cur[cur.length-1];
   var id = cur && cur.length ? cur[0].id : "";

   if (lastId !== id) {
       lastId = id;
       // Set/remove active class
       menuItems
         .parent().removeClass("active")
         .end().filter("[href=#"+id+"]").parent().addClass("active");
   }                   
});



$(window).scroll(function(){
     $('.main-header').toggleClass('scrolled', $(this).scrollTop() > 1);
 });



$('a[href="#top"]').click(function(){
    $('html, body').animate({scrollTop: 0}, 'slow');
    return false;
});


$('.flexslider').flexslider({
  slideshow: true,
  slideshowSpeed: 3000,  
  animation: "fade",
  directionNav: false,
});


$('.toggle-menu').click(function(){
    $('.menu-first').toggleClass('show');
    // $('.menu-first').slideToggle();
});

$('.menu-first li a').click(function(){
  $('.menu-first').removeClass('show');
});


/************** LightBox *********************/
  $(function(){
    $('[data-rel="lightbox"]').lightbox();
  });

});

Понравилась статья? Поделить с друзьями:
  • Uncaught error reducers may not dispatch actions
  • Uncaught error recaptcha placeholder element must be empty
  • Uncaught error objects are not valid as a react child
  • Uncaught error no url provided dropzone
  • Uncaught error no element is specified to initialize perfectscrollbar