1

下手な英語で申し訳ありませんが、問題のある質問があります。

ここに私が持っているメッセージがあります:

Uncaught TypeError: Cannot read property 'top' of undefined 

ここに私の機能があります:

    function onScroll(event){
        var scrollPos = $(document).scrollTop();
        $('#menu-center a').each(function () {
            var currLink = $(this);
            var refElement = $(currLink.attr("href"));
            if (refElement.position().top<= scrollPos && refElement.position().top + refElement.heig
ht() > scrollPos) {
                $('#menu-center ul li a').removeClass("active");
                currLink.addClass("active");
            }
            else{
                currLink.removeClass("active");
            }
        });
    }

この機能を使用してローカルに別のページがあり、正常に動作しているため、わかりません。

ウェブで検索しましたが、私の問題に対応するものはありません。

ご協力いただきありがとうございます

4

2 に答える 2

0

この行を変更します:var refElement = $(currLink.attr("href")); この行で:var refElement = $(currLink).attr("href");

于 2014-08-22T20:33:22.183 に答える
0

上記の問題の解決策を見つけました。次のコード スニペットを参照してください。

jQuery(document).ready(function($) {
  $(document).on("scroll", onScroll);
});

function onScroll(event){
  var scrollPos = $(document).scrollTop();
  $('#menu-center a').each(function () {
        var currLink = $(this);
        var refElement = currLink.attr("href");
        var splitEle = refElement.split('#');

        if ($("#"+splitEle[1]).offset().top <= scrollPos && $("#"+splitEle[1]).offset().top + $("#"+splitEle[1]).height() > scrollPos) {
            $('#menu-center ul li').removeClass("active");
            currLink.parent().addClass("active");
        }else{
            currLink.parent().removeClass("active");
        }
    });
}
于 2015-11-28T04:45:57.977 に答える