2016-05-30 8 views
0

私はCoffeescriptファイルを持っています。このファイルは、.has-errorタイプの最初のエラーにスクロールするか、ページに表示される.alert-dangerと入力します。javascript/coffeescriptで最初の2つのクラスを選択する方法は?

$(document).ajaxComplete -> 
 
    scroll_to_error() 
 

 
@scroll_to_error = -> 
 
    if $('.alert-danger:visible:first').length > 0 
 
    $('html, body').animate { scrollTop: $('.alert-danger:visible:first').offset().top - 220 }, 'fast' 
 

 
    if $('.has-error:visible:first').length > 0 
 
    $('html, body').animate { scrollTop: $('.has-error:visible:first').offset().top - 220 }, 'fast' 
 
    return

しかし、私はクラス.has・エラーのいずれかまたは.alert-危険との最初の要素にスクロールします。これについて行く方法はありますか?

答えて

0

次の2つのクラスセレクタを組み合わせることmultiple selectorを使用することができます。

のjQuery( "selector1、selector2、selectorN")
[...]
でDOM要素の順序返されたjQueryオブジェクトは、ドキュメント順になるため同一ではない場合があります。また

offsetのアクセサバージョン

はそうあなたが含む心配する必要はありません

[...]、最初の要素の現在の座標を取得しますあなたのセレクタに:first

したがって、このような何か:

$errors = $('.alert-danger:visible, .has-error:visible') 
if $errors.length 
    $('html, body').animate { scrollTop: $errors.offset().top - 220 }, 'fast' 

は、トリックを行う必要があります。 $errors.lengthは一致するものがなければゼロでなければならず、0がまだCoffeeScriptでは偽であるので、単純なif $errors.lengthで十分である場合は、if $errors.length > 0と言うことができます。

関連する問題