【发布时间】:2011-12-13 18:20:54
【问题描述】:
我正在尝试使一系列 div 中的一个与 jquery 及其导航链接一起随机出现(即,如果服务被选中,服务链接将消失)。我在这个论坛上多次以各种形式找到此代码,并且想知道是否以及如何将其调整为我想要的。
var services = $(random1, random2, random3).get()
.sort(function(){return Math.round(Math.random());}).slice(0,1)
$(services)/*Conditions here*/;
var random1 = false;
var random2 = false;
var random3 = false;
我知道,这是一个非常糟糕的例子。我迷路了。任何帮助将不胜感激,并提前致谢。
编辑:我之前确实尝试过进行更简单的比较,但这是我实际正在做的事情。我试图改编来自@pst 的代码。
var v1 = "hello"
var v2 = "world"
var control = [
function (v) { v1 = v },
function (v) { v2 = v }
]
$.each(control, function (i, fn) {
fn(false)
})
$("a#random-btn").click(function(event){
event.preventDefault();
var trueIdx = Math.floor(control.length * Math.random())
props[trueIdx](true)
if (v1 === true){
$("div#small-obstacles-contain a#1 span").stop().animate({opacity: 1,}, '100').animate({opacity: 0,}, '100');
$("div#small-obstacles-contain a#2 span").stop().animate({opacity: 1,}, '100').animate({opacity: 0,}, '100');
}
if (v2 === true){
$("div#small-obstacles-contain a#3 span").stop().animate({opacity: 1,}, '100').animate({opacity: 0,}, '100');
$("div#small-obstacles-contain a#4 span").stop().animate({opacity: 1,}, '100').animate({opacity: 0,}, '100');
}
});
【问题讨论】:
-
请不要将不是 DOM 元素的对象包装在 jQuery 对象中。这不是 jQuery 的用途。您可以使用纯 javascript 来做到这一点,如果您想要好的功能实用程序,请查看 Underscore.js。除此之外,
$(random1, random2, random3).get()与[random1, random2, random3]相同 - 所以你实际上并没有使用 jQuery,因为你包装了你的变量然后再次解包它们。$(services);然后什么都不做,因为你扔掉了返回值。 -
我还没有添加退货,我在默认的
.show()有它。它很可能是.animation()。没关系,我希望它使 var 为真。
标签: jquery arrays variables var