прокрутить шпион на атрибут данных и массив - PullRequest
0 голосов
/ 06 ноября 2018

У меня есть массив разделов страницы, поступающих из CMS, мне нужно, чтобы меню привязывалось к разделу, основанному на атрибутах данных, сначала data-target, затем data-index (массив)

У меня есть якорь, работающий над разделом, но я не могу заставить класс работать с соответствующим разделом и пунктом меню. Мне нужно, чтобы рамка применялась под именем элемента в меню либо по щелчку, либо при прокрутке до раздела.

Моя функция JavaScript для привязки к разделу

Этот раздел контролирует привязку к определенному разделу на странице, однако я не могу заставить класс menuFollower-t работать с текущим разделом, в настоящее время он работает, только если вы щелкнете по пункту меню и доза не исчезнет. если вы щелкнете по следующему пункту, а также доза не будет работать, если вы перейдете к разделу

мое менюFollower-t просто background: black; для тестирования

  _pdpNavigationScrollTo = function () {
        _pdpLink.on('click', function (e) {
            e.preventDefault();
            var _fixedNavHeight, _target, _target_index, _scrollTopPixels;

            if (!INFORMA.global.device.isDesktop) {

                _target = $(this).data('target');
                _target_index = $(this).data('target-index');

                $('#pdp-sections').slideUp();
                _pdpNavigationHeight = $('#pdp-navigation .nav-pdp-nondesktop').outerHeight();


                if (!_pdpFixed)
                    _pdpSectionsHeight = $('#pdp-sections').height();
                else
                    _pdpSectionsHeight = 0;

                _fixedNavHeight = _navHeightMobile;
                var anchorElementArray = $("[id='" + _target + "']");

                // console.log(anchorElementArray[_target_index]);

                if (anchorElementArray.length >= [_target_index]) {
                    //Fix ben-2018-onscroll
                    _scrollTopPixels = $(anchorElementArray[_target_index]).offset().top - (_fixedNavHeight + _pdpNavigationHeight + _pdpSectionsHeight);
                    //End
                    // console.log(.offset)
                } else {
                    _scrollTopPixels = $("#" + _target).offset().top - (_fixedNavHeight + _pdpNavigationHeight + _pdpSectionsHeight);
                }
                $('html, body').stop().animate({
                    scrollTop: _scrollTopPixels
                }, 1000);

            } else {
                $('#pdp-navigation li').removeClass('selected');
                $('#pdp-navigation li').addClass('select-options');
                _pdpNavigationHeight = _pdpNavigation.height();
                _target = $(this).data('target');
                _target_index = $(this).data('target-index');
                _fixedNavHeight = _navHeightMobile;
                var anchorElementArrayDesk = $("[id='" + _target + "']");

                if (anchorElementArrayDesk.length >= [_target_index]) {
                    //Fix ben-2018-onscroll
                    _scrollTopPixels = $(anchorElementArrayDesk[_target_index]).offset().top - (_fixedNavHeight + _pdpNavigationHeight);
                    //End
                     $(this).addClass('menuFollower-t');
                } else {
                    _scrollTopPixels = $("#" + _target).offset().top - (_fixedNavHeight + _pdpNavigationHeight);
                }
                $('html, body').stop().animate({
                    scrollTop: _scrollTopPixels
                }, 1000);
            }

        })
    };
...