0

我有这段代码,我想在元素所在的行之后插入 div。我可以对行中的最后一个元素执行此操作。问题是我无法弄清楚如何为同一行中的其余元素执行此操作

HTML

<div class="wrap">
  <div class="info"></div>
    <div class="info"></div>
    <div class="info"></div>
    <div class="info"></div>
    <div class="info"></div>
    <div class="info"></div>
    <div class="info"></div>
    <div class="info"></div>
    <div class="info"></div>
    <div class="info"></div>
    <div class="info"></div>
    <div class="info"></div>
    <div class="info"></div>
    <div class="info"></div>

    <div class="newdiv"></div>

CSS

.wrap{border:1px solid #000;width:630px}
.info{border:1px solid red; width:180px;float:left;margin-left:20px;height:100px;margin-top:20px}
.newdiv{width:100%;height:100px;background:green;display:none;float:left}
.active{background:brown}

jQuery

$('.info').on('click',function(){
  $('.info').removeClass('active');
  $(this).addClass('active');

  if(($(this).index('.info')+1)%3===0)
  {
    $('.newdiv').insertAfter($(this)).show();
  }

});

演示http://jsbin.com/AvERUpU/1/

4

2 回答 2

2

计算第 3 个元素的索引:

  var index = $(this).index('.info');
  var afterIndex = index - index % 3 + 2;
  var all = $('.info');
  if (afterIndex >= all.length) {
     afterIndex = all.length - 1;
  }
  $('.newdiv').insertAfter(all.eq(afterIndex)).show();

http://jsbin.com/AvERUpU/4/

于 2013-12-08T09:46:51.197 回答
1

只是一个简单的数学。

尝试这个,

$('.info').on('click',function(){
  $('.info').removeClass('active');
  $(this).addClass('active'); 
  var xIndexAdded = $(this).index('.info') + (2 - ($(this).index('.info')%3));     
  $('.newdiv')
     .insertAfter(($('.info').eq((xIndexAdded>=$('.info').length)?$('.info').length-1:xIndexAdded))) 
     .show();  
});

演示

于 2013-12-08T09:48:29.000 回答