2017-06-01 8 views
2

私はこのjQuery視差コードを動作させようとしていますが、私はすべてをスパゲッティにしたくありません。複数の要素IDに適用するにはどのようにループすることができますか?複数の要素を実行するための関数をループしようとしています - jQuery

(関数は各特定のdivに固有の複数回実行する必要があるため、クラスでは機能しません) - ループ処理についてはまだよくありません。

とにかく、これは一つのセクション(この例では、子のdiv、#about> #pAbout付きのdiv)のための機能コードです:

$(document).ready(function() { 
    if ($("#pAbout").length) { 
    parallax(); 
    } 
}); 

$(window).scroll(function(e) { 
    if ($("#pAbout").length) { 
    parallax(); 
    } 
}); 

function parallax(){ 
    if($("#pAbout").length > 0) { 
    var plxBackground = $("#pAbout"); 
    var plxWindow = $("#about"); 

    var plxWindowTopToPageTop = $(plxWindow).offset().top; 
    var windowTopToPageTop = $(window).scrollTop(); 
    var plxWindowTopToWindowTop = plxWindowTopToPageTop - windowTopToPageTop; 

    var plxBackgroundTopToPageTop = $(plxBackground).offset().top; 
    var windowInnerHeight = window.innerHeight; 
    var plxBackgroundTopToWindowTop = plxBackgroundTopToPageTop - windowTopToPageTop; 
    var plxBackgroundTopToWindowBottom = windowInnerHeight - plxBackgroundTopToWindowTop; 
    var plxSpeed = 0.35; 

    plxBackground.css('top', - (plxWindowTopToWindowTop * plxSpeed) + 'px'); 
    } 
} 

私はこのような配列を作成するために期待していた。

var ids = ['#pAbout', '#pConcept', '#pBroadcast', '#pDigital', '#pDesign', '#pContact']; 

しかし、私は残念ながら仕事をすることはできませんが、非常にイライラしています。どんな助けでも大歓迎です!

+0

は私達にループであなたの試みをしてください示すこと。 –

答えて

1

セレクタ間にカンマを使用するだけで、jQueryで複数のセレクタを使用して異種要素を選択することができます。

$("#pAbout, #pConcept, #pBroadcast, #pDigital, #pDesign, #pContact") 
    .each(function(){ 
    //manipulate element here 
}); 

全てマッチした要素の上にeach()反復するので、長さをチェックする必要はありませんなど

+0

素晴らしいです、どうもありがとうございます - 私は明日それを試してみるつもりです。 – Joel

+0

これは好きではないようです - 私はすべての機能の中で自己参照しているので、私はそれを元に戻しています。私はそれが関数名 "parallax()"を参照しているからだと信じています - 各反復でその変更を行うことができるかどうか疑問に思っています。 – Joel

+0

これはスパゲッティスですが、それは問題だと確信しています。私はグーグルで始まります – Joel

関連する問題