Подтвердить что ты не робот

Синтаксическая ошибка, непризнанное выражение для href

Когда я добавляю ниже скрипт и запускаю. Я получаю это:

Uncaught Error: синтаксическая ошибка, нераспознанное выражение: ul li a [href= #! Id1]

Я не уверен, какая двойная кавычка вызывает проблему.

HTML

<ul>
 <li class="slist selected" id="id1"><a href="#!id10">Test1/a></li>
 <li class="slist" id="id2"><a href="#!id20">Test2</a></li>
 <li class="slist" id="id3"><a href="#!id30">Test3/a></li>
</ul>

JS

$(document).ready(function () {
    var id = "#!" + window.location.href.split("!")[1];
    if ($("ul li a[href=" + id + "]").length) {
        console.log("present");    
    } else {    
        console.log("absent")
    }
});
4b9b3361

Ответ 1

При использовании селектора, основанного на атрибутах, необходимо заключить специальные символы в кавычки.

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

Ваша версия селектора привела бы к

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

#! выдаст непризнанное выражение.


Моя версия, в которой "" удаляются символы

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

Ответ 2

Я попробовал решение, предоставленное

https://github.com/jquery/jquery/issues/2885

который работал на меня. Я ищу [href=#] in js and replace with [href*=\\#]

a[href*=\\#]:not([href=\\#])

Ответ 3

вы можете добавить код ниже в functions.php

function modify_jquery() {
if (!is_admin()) {
	wp_deregister_script('jquery');
	wp_register_script('jquery', 'https://code.jquery.com/jquery-1.11.3.min.js');
	wp_enqueue_script('jquery');
}
}
add_action('init', 'modify_jquery');