0

我有一个带有 jquery 的 each 循环(如果代码工作得更好,我不介意使用 for 循环)并且它循环使用 class="searchMe" 的所有 div。我想将当前 div 存储在一个变量中,我可以在循环的下一次迭代中使用该变量将值与新的当前 div 进行比较。一些代码被删除(所有工作)以简化事情,但这是我的代码:

$('.searchMe').each(function(){
  var id = $(this);
  sortUp += 1,
  sortDown -= 1;

  if (test) {
    id.attr("name", ""+sortUp+"");
  }
  else {
    id.attr("name", ""+sortDown+"");
  }

  if ( id.attr("name") > lastId.attr("name") ) {
    id.insertBefore(lastId);
  }
  lastId = id; //this doesn't work, but illustrates what I'm trying to do
});

除最后 3 行外,一切正常。使用 each/for 循环可以吗?

4

2 回答 2

2

当您单独向后比较时,我不知道为什么需要排序。您可以将最后三行替换为...

if ( parseInt(id.attr("name")) > parseInt(id.prev().attr("name")) ) {
 id.insertBefore(id.prev()).remove();
}
于 2013-08-01T04:45:39.697 回答
2

你可以用index$.each()

喜欢

$('.searchMe').each(function(index){
   var id = $(this);
   sortUp += 1,
   sortDown -= 1;
   if (test) {// don't know what is test, let it is predefined
     id.attr("name", sortUp);// no need to add ""
   }
   else {
     id.attr("name", sortDown);
   }
   if ($('.searchMe').eq(index-1).length && id.attr("name") > $('.searchMe').eq(index-1).attr("name") ) {
     id.insertBefore($('.searchMe').eq(index-1));
   }
});

或者你也可以define lastid喜欢

var lastId='';// let it be global
$('.searchMe').each(function(index){
   var id = $(this);
   sortUp += 1,
   sortDown -= 1;
   if (test) {// don't know what is test, let it is predefined
      id.attr("name", sortUp);// no need to add ""
   }
   else {
      id.attr("name", sortDown);
   }
   if (id.attr("name") > lastId.attr("name") ) {
      id.insertBefore(lastId);
   }
   lastId=id;// assign here the current id
});

阅读eq()$.each()

于 2013-08-01T04:38:38.287 回答