如何使用jquery随机删除变量?

时间:2016-05-06 02:14:54

标签: javascript jquery

我正试图找到一种方法,使用jquery从Web上的某个div中删除变量。 这不涉及使用数组。如果我可以使用fadeIn()search()remove(),那就更好了。

var something = '#img' + count;

在网络上,图片将随着时间的推移添加到div(使用setTimeout)。这些图像已分配给变量(something),我需要找到一种方法将其从网络上的某个div中删除。它可以隐藏,移除,无论如何,它必须随机地从用户的视图中消失(时间和哪个图像将消失)。

感谢您的帮助和提前的时间。

我的功能代码:

var count = 0;

function foo() {
  var xPos = xPosition();
  var yPos = yPosition();
  var someTime;

  $("div").append('<img id="Img" ' + count + ' src = "img.png" style="top:' + yPos + 'px; left: ' + xPos + 'px; " />');
  var something = "#Img" + count;
  someTime = setTimeout('foo()', randInterval());
  $(something).hide();
  count++;

  if (timeRemaining == 0) {
    clearTimeout(someTime);
    return;
  }

2 个答案:

答案 0 :(得分:0)

请永远不要在身份证上附加一个数字,并将编号的名称拼凑在一起。这是不可维护和糟糕的。使用class

通过向元素添加类名为一个或多个元素指定目的或功能。如果要向元素添加信息,那很好,请在属性名称上使用data-前缀,这一切都是合法的。 data-itemid就是一个例子。

您可以查询匹配的元素var those = $('.that-class-name'),以便重复使用。在那里,您可以使用those.eq(0)those.eq(x.length - 1)访问各个元素。例如,如果您以某种方式知道需要删除第3个,那么those.eq(3).remove();。如果您想挑选它们并且只选择符合条件的那些,请使用those.filter(callback).remove(),如果callback引用的元素应被删除,则true会返回this。如果您想使用其他选择器对其进行过滤,.filter也会接受选择器。

这是你的意思吗?

答案 1 :(得分:0)

将所有图像分类。然后,您可以使用$(".class").length()获取图片数量,在此范围内选择一个随机数,然后使用.eq()删除该元素。

function addImage() {
    var xPos = xPosition();
    var yPos = yPosition();
    $("div").append($("<img>", {
        src: "img.png",
        "class": "imageclass",
        style: {
            top: yPos+"px",
            left: xPos+"px"
        }
    }));
    setTimeout(addImage, randInterval());
}
setTimeout(addImage, randInterval());

function removeImage() {
    var images = $(".imageclass");
    if (images.length) {
        var rand = Math.floor(Math.random() * images.length);
        images.eq(rand).remove();
    }
    setTimeout(removeImage, randInterval());
}
setTimeout(removeImage, randInterval());

在我的代码中,我使用单独的计时器来添加和删除图像。如果您愿意,可以从setTimeout移除removeImage(),然后从addImage调用它,这样每当它添加新图片时,它都会删除图片。