2017-06-01 172 views
2

我試圖讓這個jQuery parallax代碼工作,但我不想意大利麪一切。如何循環應用於多個元素ID?試圖循環一個函數來運行多個元素 - jQuery

(它不能與類一起工作,因爲函數需要針對每個特定的div運行多次) - 我在循環方面不是很好,但仍然在學習如何去做這件事。

無論如何,這是一個截面的運作代碼(與兒童的div一個div,#about> #pAbout在這種情況下):

$(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

它似乎並不喜歡這樣 - 我正在處理它,所以在.each函數中所有東西都是自引用的,我從它那裏得不到任何東西。我相信這是因爲他們都引用了函數名稱「parallax()」 - 只是想知道我是否可以在每次迭代中做出這種改變.. – Joel

+0

它spaghettis就好,當我爲每個新的函數名稱, m確定這就是問題..我將開始使用搜索網絡 – Joel

相關問題