首页 > 解决方案 > 单击时出现 jQuery 错误 - > Uncaught TypeError: Cannot read property 'top' of undefined

问题描述

我不是 jQuery 专家,我想知道在单击简单表格中的 2 个图标时我是否做错了什么会在 jQuery 中产生错误。

在特定的此处,当我单击 pdf 图标或信封图标时,我在控制台中看到生成了错误(每次单击 2 个图标之一时,数字都会增加)。另外,我为图标设置的链接不再起作用。

如您所见,在右侧我有一个动画。这只是我停用的脚本代码,以查看是否是问题所在,但没有奏效。

不幸的是,我正在使用 CMS 插件,我无法更改它的代码。

这是错误

(index):62 Uncaught TypeError: Cannot read property 'top' of undefined
    at HTMLTableElement.<anonymous> ((index):62)
    at HTMLTableElement.dispatch (jquery-1.12.4.js:5226)
    at HTMLTableElement.elemData.handle (jquery-1.12.4.js:4878)

这是代码

//your current click function
$('.scroll').on('click',function(e){
    e.preventDefault();
    $('html,body').animate({
        scrollTop:$($(this).attr('href')).offset().top + 'px'
    },1000,'swing');
});

标签: javascriptjquery

解决方案


您可以尝试为这两个图标的链接添加一个类,例如我添加 class="clickable":

<a class="clickable" href="https://kirchmatt-breitenbach.ch/wp-content/uploads/2018/10/C16-0.2.pdf" target="_blank"><img src="https://kirchmatt-breitenbach.ch/wp-content/uploads/2018/10/pdf.png" height="20" width="auto"></a>

然后将其添加到您的 javascript:

$(".clickable, .clickable img").on('click', function(e){
   e.stopPropagation();
}

这样当您单击这两个链接时,滚动 javascript 代码就不会运行。


推荐阅读