2012-02-23 11 views
2

私は文書内の複数のdivをスクロールするためにscrollToプラグインを使用しようとしています。scrollTo存在しないjquery要素がエラーを投げます

問題は、スクロールしているアイテムが常に存在するとは限りません。そのため、エラーが発生します。

各スクロール可能なdivには、アンカーのリストが含まれています。ユーザーの入力に応じて、いくつかの項目はクラスを変更します(項目ごとに複数のクラスがあります)。

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

ご協力いただけると助かります。

答えて

1

要素の存在を確認するためにあなたのアプローチはあなたの条件によって、正しいですが間違っている、これを試してみてください。

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

私はそれを逃した信じることができません!これはvbからjsに切り替えるときに起こります。演算子を混在させます(<!と!=の素晴らしい組み合わせです。同意しないのですか?) ありがとうございます。今は完璧に動作します。 – einav

+0

btw、if($( 'a.highlighted.col4')。length)またはif($( 'a.highlighted.col4')。length!= 0)を使用するかどうかは重要ですか? – einav

+0

javascriptでは、条件内の0以外の値はtrueと解釈されます。従って 'if(.length)'と 'if(.length!= 0)'は同じです。 –

関連する問題