JavasScript - Uncaught Error: синтаксическая ошибка, нераспознанное выражение: [href = # contact] (WordPress) - PullRequest
0 голосов
/ 23 ноября 2018

Я пытаюсь реализовать взаимодействие, в котором класс добавляется к определенному пункту меню, когда отображается a.К сожалению, я получаю следующую ошибку:

Uncaught Error: Syntax error, unrecognised expression: [href=#contact]

Заранее спасибо.

Псевдокод

  • Прокрутка страницы
  • Когда раздел находится в поле зрения, добавьте класс в соответствующий элемент навигации

JavaScript

// Cache selectors
var lastId,
    topMenu = $('#top-menu'),
    topMenuHeight = topMenu.outerHeight() + 1,
    // All list items
    menuItems = topMenu.find('a'),
    // Anchors corresponding to menu items
    scrollItems = menuItems.map(function() {
        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,
        },
        850,
    )
    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 : ''

    console.log('Cur', cur, 'ID', id)

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

1 Ответ

0 голосов
/ 23 ноября 2018

jQuery довольно требователен, когда дело доходит до кавычек в селекторах атрибутов.Вы должны использовать строку в кавычках для значения (одинарного или двойного).

Изменить:

filter('[href=#' + id + ']')

Кому:

filter('[href="#' + id + '"]')

Если вы хотите быть немного менее точным, но можете сбросить #, вы можете использовать ~= вместо просто =.

...