滚动到不存在的 jquery 元素会抛出错误

发布于 2025-01-08 13:06:26 字数 1331 浏览 0 评论 0原文

我正在尝试使用scrollTo 插件滚动文档中的多个div。

问题是我滚动到的项目并不总是存在,因此它会引发错误。

每个可滚动 div 都包含一个锚点列表。根据用户输入,某些项目会更改其类别(每个项目有多个类别)。我有 4 个可选类,每个项目都可以更改为:

 <a id="445" class="list col3"">Paris</a>
 <a id="445" class="highlighted col3">Paris</a>
 <a id="445" class="selected col3">Paris</a>
 <a id="445" class="noshow col3">Paris</a>

我想将每个 div 滚动到选定/突出显示的项目(如果有)。如果没有这样的项目,就不会发生任何事情。

我使用此语法进行滚动:

$("div#places4").scrollTo($('a.highlighted.col4'),800);

当 div#places4 中有突出显示的元素时,它可以正常工作,但是当没有突出显示的元素时,它会抛出错误(“o 未定义” - 指的是scrollTo 代码)。

我尝试像这样调节对scrollTo的调用:

if($('a.highlighted.col4').length<!0) {$("div#places4").scrollTo($('a.highlighted.col4'),800)}

但出现了相同的错误。

除了令人烦恼的错误之外(我喜欢在页面加载时我的控制台干净且空!),该错误会阻止将来调用scrollTo,因为当我一个接一个地调用多个滚动时,它们都不会执行:

if($('a.selected.col1').length<!0) {$("div#places1").scrollTo($('a.selected.col1'),8000)}
if($('a.selected.col2').length<!0) {$("div#places2").scrollTo($('a.selected.col2'),8000)}
if($('a.selected.col3').length<!0) {$("div#places3").scrollTo($('a.selected.col3'),8000)}
if($('a.selected.col4').length<!0) {$("div#places4").scrollTo($('a.selected.col4'),8000)}

任何帮助都将是高度赞赏!

I'm trying to use scrollTo plugin to scroll several divs in my document.

The problem is the items I'm scrolling to don't always exist, so it throws an error.

Each of the scrollable divs contain a list of anchors. Depending on the user input, some items change their class (and it's multiple classes for each item). I have 4 optional classes each item can change to:

 <a id="445" class="list col3"">Paris</a>
 <a id="445" class="highlighted col3">Paris</a>
 <a id="445" class="selected col3">Paris</a>
 <a id="445" class="noshow col3">Paris</a>

I want to scroll each div to the selected/highlighted item, if there is one. If there isn't such item, nothing should happen.

I use this syntax to do the scrolling:

$("div#places4").scrollTo($('a.highlighted.col4'),800);

It works fine when there is a highlighted element in div#places4, but when there isn't, it throws an error ("o is undefined" - referring to the scrollTo code).

I tried conditioning the call to scrollTo like this:

if($('a.highlighted.col4').length<!0) {$("div#places4").scrollTo($('a.highlighted.col4'),800)}

But the same error shows up.

Other then the annoyance of the error (I like my console clean and empty when my page loads!), the error prevents future calls to scrollTo, because when I call several scrolls one after the other, none of them executes:

if($('a.selected.col1').length<!0) {$("div#places1").scrollTo($('a.selected.col1'),8000)}
if($('a.selected.col2').length<!0) {$("div#places2").scrollTo($('a.selected.col2'),8000)}
if($('a.selected.col3').length<!0) {$("div#places3").scrollTo($('a.selected.col3'),8000)}
if($('a.selected.col4').length<!0) {$("div#places4").scrollTo($('a.selected.col4'),8000)}

Any help would be highly appreciated!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

浮华 2025-01-15 13:06:27

您检查元素是否存在的方法是正确的,但您的条件是错误的,请尝试以下操作:

if ($('a.highlighted.col4').length) { 
    $("div#places4").scrollTo($('a.highlighted.col4'),800)
}

Your approach for checking the existence of the element is correct, by your condition is wrong, try this:

if ($('a.highlighted.col4').length) { 
    $("div#places4").scrollTo($('a.highlighted.col4'),800)
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文