2017-06-01 173 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

相关问题