0

我有一些这样的链接:

 <ul class="vertlist">
    <li><a href="#personal" title="Go to Personal section." class="crumblink">Personal</a></li>
    <li><a href="#business" title="Go to Business section." class="crumblink">Business</a></li>
    <li><a href="#company" title="Go to Company section." class="crumblink">Company</a></li>
    <li><a href="#engineering" title="Go to Engineering section." class="crumblink">Engineering</a></li>
    <li><a href="#it" title="Go to IT section." class="crumblink">IT</a></li>
    <li><a href="#hr" title="Go to HR section." class="crumblink">HR</a></li>
  </ul>

还有一些应该允许一些平滑导航的jquery:

  $(document).ready(function () {
            $('.crumblink').click(function () {
                $('html, body').animate({
                    scrollTop: $($.attr(this, 'href')).offset().top
                }, 500);
                return false;
            });
        })

在我单击任何链接的那一刻,我得到一个未捕获的异常:

“无法读取 null 的属性顶部”

例如个人的锚标签是这样的:

<h2><a name="personal" id="myPersonal">Personal</a></h2>

4

2 回答 2

2

锚变量不包含您站点的有效选择器。对此调用 offset 将返回null

您正在尝试访问不存在的 href。

看这里

于 2013-04-08T13:12:20.470 回答
0

如果您尝试href从锚点获取属性,那么您做的不对(或者我可能还没有发现 jQuery 的奥秘):

scrollTop: $($.attr(this, 'href')).offset().top

它应该是:

scrollTop: $(this.href).offset().top

如果 for 的值href是无效的选择器,offset()则可能会返回null。此代码将防止:

var elements = $(this.href);

if (elements && elements.length) {
    $('html, body').animate({
        scrollTop: elements.offset().top
    }, 500);
}
于 2013-04-08T13:15:00.230 回答