Syntax error unrecognized expression a href not 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.

I have install a fresh wordpress with the DIVI theme.

WordPress Version: 4.5.2

DIVI Theme Version : 2.6.1

I having this error showing console.


You need to enclose special characters in quotes when using a attribute based selector.

if ($('ul li a[href="' + id + '"]').length) {

Your version of selector would result

if ($("ul li a[href=#!...]").length) {

The #! will throw unrecognized expression.

My version where the "" escape the characters

if ($('ul li a[href="#!..."]').length) {

Related Articles

Error not detected: syntax error, unrecognized expression + Ruby on Rails

Uncaught Error: Syntax error, unrecognized expression: /secure/projects/softilluminations/tasks/new Getting above error on console of broswer. My View side code is below <%= link_to ‘Create Task’, new_secure_project_task_path(project), class: ‘btn bt

JQuery JS Error not detected: Syntax error, unrecognized expression:

So, I have this issue that has been bugging me and I just can’t seem to fix it. The error that comes up is this: Uncaught Error: Syntax error, unrecognized expression: [{«type»:»header»,»subtype»:»h1″,»label&qu

Error not detected: syntax error, unrecognized expression: # [HTMLDivElement object]

I’m passing a value to codeigniter function for getting a result. But the ajax value does not pass to the php function. My script function follows : <script src=»http://code.jquery.com/jquery-1.11.1.min.js»></script> <Script> $

Error not detected: syntax error, unrecognized expression in selection type Yadcf

I am having a problem with select type in Yadcf. It does not allow brackets. I have this code { column_number: 9, filter_type: ‘select’, select_type: «select2», column_data_type: «html», html_data_type: «text», filter_match_m

Error not detected: syntax error, unrecognized expression: entry: check box [name = ninja_forms_field_57 [terms]]

I’m trying to limit the number of checkboxes that can be checked within a form, but am getting the following error: Uncaught Error: Syntax error, unrecognized expression: input:checkbox[name=ninja_forms_field_57[terms]] Here is the Javascript that I’

Error not detected: Syntax error, unrecognized expression: pseudo not supported:

This question already has an answer here: How to select JSF components using jQuery? 4 answers i have an txtBox and its id is : beginDateTxt but jsf makes it j_idt8:beginDateTxt in jquery i try to reach it like that <script type=»text/javascript&q

Exception not detected: syntax error, unrecognized expression jQuery

I am having a few problems with jQuery 1.6, I am trying to select this object $(‘#’ + id) where id looks like skill|3345015|7868, but console always give me a : Error : uncaught exception: Syntax error, unrecognized expression: |3345015|7868 Thanks f

JQUERY: error not detected: syntax error, unrecognized expression

console.log($(‘»#’+d+'»‘)); in html i have <div id=»2013-10-23″> <h1>5</h1> <p>eeeeeeeeeeee</p> </div> It throws error: Uncaught Error: Syntax error, unrecognized expression: «#2013-10-23»

after the update of jQuery, exception not taken: syntax error, unrecognized expression: h3

I’m working on a new version of the website, and am now finding an issue with my javascript code that isn’t being handled nicely. What I have been doing in the past is $(‘#lb_outer_title :h3’).html(title); which changed the text of the title attribut

JQuery exception not entered: syntax error, unrecognized expression [tabindex = & ldquo; something]

All of a sudden some UI functionlities in our site are not working and I’m getting the error message: jQuery uncaught exception: syntax error, unrecognized expression [ tabindex=»something»] THIS IS MY CODE: var thumb_src = jQuery(‘a[name=»

Jquery syntax error, unrecognized expression:

Why do I get this error and how can I test for it so it wont break, I tried checking for null but obviously that wont work, thanks. Please don’t advice to not write the ID like this as I know its wrong but it is a possibility. var jsonTest = [ { «myI

JQuery / Javascript substitution ‘Syntax error, unrecognized expression’

I am implementing jQuery chaining — using Mika Tuupola’s Chained plugin — in my rails project (using nested form_for partials) and need to dynamically change the chaining attribute: The code that works without substitution: $(«.employee_title_2»

Jquery Ajax & amp; Microsoft JScript runtime error: syntax error, unrecognized expression:

I am working on the ode-to-food MVC4 demo app on Pluralsite by Scott Allen and have a troublesome error enabling ajax calls. I am thinking this may have something to do with my more recent jquery version but not sure. When I uncomment following line

jQuery + client-side template = & ldquo; Syntax error, unrecognized expression & rdquo;

I just updated jQuery from 1.8.3 to 1.9, and it started crashing all of a sudden. This is my template: <script type=»text/template» id=»modal_template»> <div>hello</div> </script> This is how I read it: modal_te

Реализуем плавный переход по якорным ссылкам в рамках текущей страницы. Данный скрипт особенно хорош тем, что не добавляет в строке браузера приставки /#link.

Script

$(document).ready(function() {
    // Плавный скролинг по якорям
    $('a[href*=#]').bind("click", function(e){
    var anchor = $(this);
    $('html, body').stop().animate({
    scrollTop: $(anchor.attr('href')).offset().top
    }, 500);
    e.preventDefault();
    });
    return false;
});

Скорость перехода может регулироваться. В предложенном коде указана 500 мл.сек.
Разметка такая: в ссылке указываем хэш-тэг например #glava1 , соответствующему id h2. Пример ниже.

Множество скриптов выдают ошибку Syntax error, unrecognized expression: a[href*=#]. Этот скрипт не вызывает ошибку:

// Плавный скролинг по якорям
$(document).ready(function(){
    $('a[href*="#"]').on('click', function(e){
        var anchor = $(this);
        $('html, body').stop().animate({
            scrollTop: $(anchor.attr('href')).offset().top
        }, 777);
        e.preventDefault();
        return false;
    });
});

Но этот вариант скрипта не корректно работает с табами Woocommerce.

Демонстрация

Оглавление

  • Глава 1
  • Глава 2
  • Глава 3
  • Глава 4

Глава 1

Рацион обычных горожан и крестьян отличался от современного недостаточным содержанием белка. Около 60% рациона (если не больше у отдельных малообеспеченных групп населения) занимали углеводы: хлеб, лепешки, разные каши. Недостаточную питательность пищи компенсировали количеством. Люди наедались лишь тогда, когда переполнялся желудок. А чувство сытости, как правило, ассоциировалось с тяжестью в желудке. Мясо употребляли сравнительно редко, в основном во время праздников. Правда стол знатных сеньоров, духовенства и городской аристократии был весьма обильным и разнообразным. Различия в питании “верхов» и “низов” общества были всегда. Первые не были ущемлены в мясных блюдах, прежде всего, в силу распространенности охоты (в лесах средневекового Запада в то время было еще достаточно много дичи — повсеместно водились медведи, росомахи, олени, кабаны, косули, туры, зубры, зайцы. Из птиц — тетерева, куропатки, глухари, дрофы, дикие гуси, утки и т.д. По данных археологов, средневековый человек употреблял в пищу мясо таких птиц как журавль, орлан, сорока, грач, цапля, выпь. Деликатесом считались мелкие птички из отряда воробьиных. Рублеными скворцами и синицами разбавляли овощные салаты. В холодном виде подавали жареных корольков и сорокопутов. Иволги и мухоловки запекались, трясогузки — тушились Ласточками и жаворонками начиняли пироги. Чем красивее была птичка, тем изысканнее считалось из нее блюдо. Например, паштет из соловьиных языков готовили лишь по большим праздникам королевские или герцогские повара), при этом истреблялось значительно больше животных, чем их можно было съесть или запасти впрок, и, как правило, большая часть мяса диких животных попросту пропадала из-за невозможности его сохранить. Поэтому к концу Средневековья на охоту уже нельзя было полагаться как на верное средство пропитания. Во-вторых, стол знатного человека всегда можно было пополнить за счет городского рынка (своей изобильностью особенно славился рынок в Париже), где можно было купить самые разнообразные продукты — от дичи до изысканных вин и фруктов. Помимо дичи, употреблялось мясо домашних птиц и животных — свинина (для откорма свиней обычно огораживалась часть леса и туда загонялись дикие кабаны), баранина, козлятина; мясо гусей и кур. Баланс мясной и растительной пищи зависел не только от географических, хозяйственных и социальных, но и от религиозных условий общества. Как известно, в общей сложности около половины года (166 дней) в Средневековье составляли постные дни, связанные с четырьмя основными и еженедельными (среда, пятница, суббота) постами. В эти дни с большей или меньшей строгостью запрещалось есть мясо и мясомолочные продукты. Исключения делались только для тяжело больных, рожениц, евреев. В регионе Средиземного моря мяса потребляли меньше, чем в Северной Европе. Сказывался, вероятно, жаркий климат Средиземноморья. Но и не только он. Из-за традиционного недостатка кормов, выпасов и т.п. там разводили меньше скота. Самым высоким в Европе в период позднего Средневековья было потребление мяса в Венгрии: в среднем около 80 кг в год. В Италии, во Флоренции, к примеру, около 50 кг. В Сьене 30 кг в ХУ в. В Центральной и Восточной Европе ели больше говядины и свинины. В Англии, Испании, Южной Франции и Италии — баранины. Специально для еды разводили голубей. Горожане ели мяса больше, чем крестьяне. Из всех потреблявшихся тогда видов продуктов легко усваивалась, главным образом, свинина, остальные продукты зачастую способствовали несварению. Вероятно, по этой причине получил распространение тип толстого одутловатого человека, внешне достаточно дородного, но в действительности же просто плохо питавшегося и страдавшего от нездоровой полноты.

Глава 2

Ассортимент средневековых огородных культур отличался от современного. В ходу были спаржа, будяк, купена, которые добавляли в салат; лебеда, поташник, кудравец, — которые смешивали в винегрете; щавель, крапива, борщевник, — добавлявшиеся в суп. Сырыми жевали толокнянку, спорыш, мяту и зубровку. Морковь и свекла еще не вошли в рацион питания. Самыми распространенными фруктовыми культурами в средние века были яблоня и крыжовник. В целом, доля овощей и фруктов в рационе питания средневекового человека была небольшой, из-за малого потребления свежих овощей и фруктов в пище почти отсутствовали витамины А, Д, Е, К и особенно С. По сути дела до конца ХУ в. ассортимент овощей и фруктов, выращивавшихся в огородах и садах европейцев, по сравнению с римской эпохой существенно не изменился. Но благодаря арабам европейцы Средневековья познакомились с цитрусовыми: апельсинами и лимонами. Из Египта пришел миндаль, с Востока (после крестовых походов) — абрикосы.

Глава 3

Массовой засолке рыбы долгое время препятствовала недостача соли, которая была в те времена очень дорогим продуктом. Каменную соль добывали редко, чаще использовали солесодержащие источники: выпаривали соленую воду в солеварнях, а затем спрессовывали соль в лепешки, которые продавали по высокой цене. Иногда эти куски соли, — конечно, прежде всего это касается раннего Средневековья — играли роль денег. Но и позднее хозяйки берегли каждую щепотку соли, поэтому засолить много рыбы было непросто. Отсутствие соли отчасти возмещалось употреблением пряностей — гвоздики, перца, корицы, лавра, мускатного ореха и мн. др. Перец и корицу привозили с Востока, и стоили они очень дорого, т. ч. простым людям они были не по карману. Простонародье чаще употребляло в пищу росшие повсюду горчицу, укроп, тмин, лук, чеснок. Широкое употребление пряностей можно объяснить не только гастрономическими вкусами эпохи, но это было и престижно. Кроме того, пряности использовали, чтобы разнообразить блюда и по возможности скрыть скверный запах мяса, рыбы, птицы, которые было трудно хранить свежими в условиях Средневековья. И, наконец, обилием пряностей, положенных в соусы и подливки, возмещалась плохая обработка продуктов и грубость блюд. При этом очень часто пряности меняли первоначальный вкус пищи и вызывали сильное жжение в желудке.

Глава 4

Конечно, обеспеченность продуктами питания во многом зависела от природных, климатических и погодных условий той или иной местности. Любой каприз природы (засуха, сильные дожди, ранние заморозки, бури и мн. др.) выводил хозяйство крестьянина из обычного ритма и мог привести к голоду, страх перед которым европейцы испытывали в течение всего Средневековья. Поэтому не случайно, что на протяжении Средневековья об угрозе голода постоянно говорят многие средневековые авторы. К примеру, голодный желудок стал постоянной темой средневекового романа о лисе Ренаре. В условиях Средневековья, когда угроза голода всегда подстерегала человека, главным достоинством еды и стола были сытность и изобилие. В праздник нужно было наесться так, чтобы в голодные дни было что вспомнить. Поэтому на свадьбу в деревне семья закалывала последнюю скотину и вычищала погреб до основания. В будни же кусок сала с хлебом считался у простолюдина-англичанина “королевской едой”, а какой-нибудь итальянский испольщик ограничивался краюхой хлеба с сыром и луковицей.

В целом же, как указывает Ф. Бродель, в период позднего Средевековья средняя масса ограничивалась 2 тыс. калорий в день и до потребности современного человека (она определяется в 3,5 — 5 тыс. калорий) “дотягивали» только верхние слои общества. Ели в Средневековье обычно два раза в день. От тех времен сохранилась забавная поговорка, что ангелы нуждаются в пище раз в день, люди — дважды, а звери — три раза. Ели в иные часы, нежели сейчас. Крестьяне завтракали не позднее 6 часов утра (не случайно поэтому завтрак по-немецки назывался “фрюштюк”, т.е. “ранний кусок”, с ним схожи по смыслу французское название завтрака “дежене» и итальянское — “диджуне” (ранний). Утром съедали большую часть дневного рациона, чтобы получше поработать. Днем поспевал суп (“супе” во Франции, “соппер» (суповая еда) — в Англии, “миттаг» (полдень) — в Германии), и люди полдничали. К вечеру работа заканчивалась — незачем было и есть. Как только смеркалось, простые люди деревни и города ложились спать. Со временем знать навязала всему обществу свою традицию питания: завтрак приблизился к полдню, в середину дня вклинился обед, ужин сместился к вечеру.

Ошибка Uncaught TypeError

Uncaught TypeError: Cannot read property ‘top’ of undefined

Данная ошибка означает, что якорей на странице с таким идентификатором (как в ссылке) не существует.

Чистый код + смещение

Чистый код плавного перехода по якорям, с компенсационным смещением:

jQuery(document).ready(function() { 

// Плавный скролинг по якорям
   jQuery('a[href*=#]').bind('click', function(e){
      var anchor = jQuery(this);
      jQuery('html, body').stop().animate({
         scrollTop: jQuery(anchor.attr('href')).offset().top<strong>-60</strong>
      }, 500);
      e.preventDefault();
   });
   return false;

});

-60 — это необходимое смещение в пикселях. Дело в том, что обычно при переходе к якорной ссылке, элемент в котором находится ссылка оказывается вплотную к верхнему краю экрана. А смещение это может скомпенсировать.

Альтернативные скрипты

Вот еще пару решений, которые нашел у Чуденкова Алексея

$(function(){$("a[href*=#]:not([href=#])").click(function(){if(location.pathname.replace(/^//,"")==this.pathname.replace(/^//,"")&&location.hostname==this.hostname){var t=$(this.hash);if(t=t.length?t:$("[name="+this.hash.slice(1)+"]"),t.length)return $("html,body").animate({scrollTop:t.offset().top},1000),!1}})});

Ещё один вариант без использования jQuery:

var linkNav = document.querySelectorAll('[href^="#"]'), //выбираем все ссылки к якорю на странице
    V = 1;  // скорость, может иметь дробное значение через точку (чем меньше значение - тем больше скорость)
for (var i = 0; i < linkNav.length; i++) {
    linkNav[i].addEventListener('click', function(e) { //по клику на ссылку
        e.preventDefault(); //отменяем стандартное поведение
        var w = window.pageYOffset,  // производим прокрутка прокрутка
            hash = this.href.replace(/[^#]*(.*)/, '$1');  // к id элемента, к которому нужно перейти
        t = document.querySelector(hash).getBoundingClientRect().top,  // отступ от окна браузера до id
            start = null;
        requestAnimationFrame(step);  // подробнее про функцию анимации [developer.mozilla.org]
        function step(time) {
            if (start === null) start = time;
            var progress = time - start,
                r = (t < 0 ? Math.max(w - progress/V, w + t) : Math.min(w + progress/V, w + t));
            window.scrollTo(0,r);
            if (r != w + t) {
                requestAnimationFrame(step)
            } else {
                location.hash = hash  // URL с хэшем
            }
        }
    }, false);
}

Данное решение (в целом плавный скроллинг по якорям) конфликтует с табами woocommerce.

Спасибо! Наш менеджер свяжется с Вами в течении 5 минут.

Понравилась статья? Поделить с друзьями:
  • Sysprep windows 7 windows произошла неустранимая ошибка
  • Syntax error unit expected but program found
  • Sysprep fatal error occurred while trying to sysprep the machine
  • Syntax error unicode error python
  • Syntax error unexpected token public