如何根据每个ID修改基于唯一div ID的链接

时间:2017-05-16 01:13:35

标签: javascript jquery

我有一个div列表,其中包含.tile类。 div类中的每个.tile都有唯一的ID。我想创建一个数组(ID' s)并根据a.link修改ID。我想每a.link修改一次.tile ID。我应该从哪里开始?

<div class="tile" id="1asdfasdfa"></div>
<div class="tile" id="2fdasdfaas"></div>
<div class="tile" id="3dfasdsadf"></div>
<div class="tile" id="4fghdfghdf"></div>
<div class="tile" id="5sdfasfdaa"></div>
<div class="tile" id="6dfasdfasf"></div>
...
<div class="tile" id="100sdfasff"></div>

<a href="#" class="link">Im A Link</a>

一个链接 - 在随机间隔X上更改。顺序通过数组。或者一些ID列表。我认为.each()会遍历每个ID,并且每次修改一次链接。

$('html, body').scrollTop( $(document).height() );

setTimeout(function() {

    var numItems = $('.tile').length;

 $('.tile').each(function(index) {
    var tileID = $(this).attr('id');    //Thank you 
    var ranNum = ((Math.floor((Math.random() * 5) + 3))*1000);
    console.log(index);
   $("#"+tileID).each(function () {

        setInterval(function() {        
        $("a.link").attr("href", "/listing/share?post_id="+tileID);
        }, ranNum);

   });

});   

    }, 5000);

1 个答案:

答案 0 :(得分:1)

创建所有ID的数组。 然后在setInterval中选择一个介于0和该数组长度之间的随机数,然后将linkId设置为随机数下的ids数组的值。然后根据该linkId设置你的href。

这是有效的,因为你拥有多少div并不重要,它只会将新的div id推送到id数组。

var ids = [];

$(".tile").each( function( index, item ) {
    ids.push($(item).attr("id"));
});

var counter = 0;    
var ranNum = ((Math.floor((Math.random() * 5) + 3))*1000);
setInterval( function() {
  var linkId = ids[counter];
  $("a.link").attr("href", "/listing/share?post_id=" + linkId).text(linkId);
  counter == ids.length - 1 ? counter = 0 : counter++;
  ranNum = ((Math.floor((Math.random() * 5) + 3))*1000);
}, ranNum)

小提琴:https://jsfiddle.net/tf112w70/2/