滚动到不存在的 jquery 元素会抛出错误
我正在尝试使用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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您检查元素是否存在的方法是正确的,但您的条件是错误的,请尝试以下操作:
Your approach for checking the existence of the element is correct, by your condition is wrong, try this: