首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jQuery -重序Div通过函数传递顺序

jQuery -重序Div通过函数传递顺序
EN

Stack Overflow用户
提问于 2016-08-12 13:48:18
回答 2查看 21关注 0票数 0

我想(希望)这是一个简单的问题。我不完全明白我在这里做什么,所以任何帮助都会很好!

我在一个容器里有4块硬币。我想运行一个函数divOrder(),并通过我希望我的div显示的顺序,就像这样:divOrder(divfour, divTwo, divThree, divOne); --它不工作,我也不知道最好的方法是什么。

HTML:

代码语言:javascript
复制
<div id="container">
  <div class="div-1">1</div>
  <div class="div-2">2</div>
  <div class="div-3">3</div>
  <div class="div-4">4</div>
</div>

JS:

代码语言:javascript
复制
var divOrder,
        url = document.location.href;

divOrder = function (divOne, divTwo, divThree, divFour) {
  var divOne = $('.div-1'),
      divTwo = $('.div-2'),
      divThree = $('.div-3'),
      divFour = $('.div-4');

  $('#container').empty().append(divfour, divTwo, divThree, divOne);

}


if (url.indexOf('?test-1') > -1) {
  divOrder(divfour, divTwo, divThree, divOne);
} else if (url.indexOf('?test-2') > -1) {
  divOrder(divThree, divTwo, divFour, divOne);
} else if (url.indexOf('?test-3') > -1) {
  divOrder(divOne, divTwo, divfour, divThree);
}

Fiddle: https://jsfiddle.net/Lvmoyw2u/

谢谢你的帮忙!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-08-12 13:58:54

将变量声明移到函数声明的上方/下面。

我还建议对函数的参数使用不同的名称,这样就不会将它们与全局变量混淆。

代码语言:javascript
复制
var divOrder = function(d1, d2, d3, d4) {
  $('#container').empty().append(d1, d2, d3, d4);
}

var divOne = $('.div-1'),
  divTwo = $('.div-2'),
  divThree = $('.div-3'),
  divFour = $('.div-4');


setInterval(function() {
  divOrder(divOne, divTwo, divThree, divFour);
  setTimeout(function() {
    divOrder(divFour, divTwo, divThree, divOne);
    setTimeout(function() {
      // or without variables:
      divOrder($('.div-3'), $('.div-1'), $('.div-4'), $('.div-2'));
    }, 1000);
  }, 1000);
}, 3000);
代码语言:javascript
复制
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<div id="container">
  <div class="div-1">1</div>
  <div class="div-2">2</div>
  <div class="div-3">3</div>
  <div class="div-4">4</div>
</div>

票数 1
EN

Stack Overflow用户

发布于 2016-08-12 14:07:43

在函数中,您静态地将div分配给参数,并且您的变量是私有的,因为它们在函数中,这就是为什么不能在if语句中访问它们的原因。相反,请这样做:

代码语言:javascript
复制
// global variables
var divOrder,
    url = document.location.href,
    divOne = $('.div-1'),
    divTwo = $('.div-2'),
    divThree = $('.div-3'),
    divFour = $('.div-4');

divOrder = function (div1, div2, div3, div4) {     
  $('#container').empty().append(div1, div2, div3, div4);
};

// tested it directly
divOrder(divThree, divTwo, divFour, divOne);


if (url.indexOf('?test-1') > -1) {
  divOrder(divFour, divTwo, divThree, divOne);
} else if (url.indexOf('?test-2') > -1) {
  divOrder(divThree, divTwo, divFour, divOne);
} else if (url.indexOf('?test-3') > -1) {
  divOrder(divOne, divTwo, divFour, divThree);
}

JSFiddle

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38919596

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档