Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 尝试循环函数以在多个元素上运行-jQuery_Javascript_Jquery_Css - Fatal编程技术网

Javascript 尝试循环函数以在多个元素上运行-jQuery

Javascript 尝试循环函数以在多个元素上运行-jQuery,javascript,jquery,css,Javascript,Jquery,Css,我正试图让这个jQuery视差代码正常工作,但我不想把所有东西都弄成意大利面条。如何循环应用于多个元素ID 它不适用于类,因为函数需要针对每个特定的div运行多次-我在循环方面不是很好,仍然在学习如何做这件事 无论如何,这是一段带子div的div的函数代码,在本例中为about>pAbout: $(document).ready(function() { if ($("#pAbout").length) { parallax(); } }); $(window).scroll(

我正试图让这个jQuery视差代码正常工作,但我不想把所有东西都弄成意大利面条。如何循环应用于多个元素ID

它不适用于类,因为函数需要针对每个特定的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'];

但我不能让电子商务正常运作,不幸的是,这让我很沮丧。任何帮助都将不胜感激

只需在选择器之间使用逗号,就可以在jQuery中使用多个选择器来选择不同的元素

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

每个元素都迭代所有匹配的元素,因此无需检查长度等。

请向我们展示您在循环中的尝试。太棒了,非常感谢-我明天就要尝试了,我会让你知道它是如何工作的。它似乎不是这样的-我正在使用它,所以每个函数中的所有内容都是自引用的。每个函数,我都不会从中得到任何回报。我相信这是因为它们都引用了函数名parallax-只是想知道我现在是否可以在每次迭代中进行更改..但是当我为每个函数名创建新的函数名时,spaghetti就很好了,所以我确定这就是问题所在。我会开始搜索。你一定要改变视差函数,使用变量引用,而不是特定的名称。在each function$中,它指的是当前匹配的元素。你能用它来工作吗?是的,我目前正在运行我的意大利面版本,而我完成了一些其他的事情,打算回到它,但实际上我在我的第一次尝试中使用了$this,但没有成功。函数名,parallax,是被引用的-我相信我必须让这个名字在每次迭代中都是唯一的-我将尝试谷歌,看看是否有一种方法可以在每次新迭代中动态地做到这一点。