scrollTo不存在的jquery元素会引发错误

时间:2012-02-23 09:50:13

标签: jquery scrollto

我正在尝试使用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,因为当我一个接一个地调用几个滚动时,它们都没有执行: / p>

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)}

任何帮助都将受到高度赞赏!

1 个答案:

答案 0 :(得分:1)

你检查元素是否存在的方法是正确的,你的条件是错误的,试试这个:

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