我有这个 HTML 结构:
<div class="row">
<div id="game1">Game 1</div>
<div id="game2">Game 2</div>
</div>
<div class="row">
<div id="game3">Game 3</div>
<div id="game4" class="fav">Game 4 (fav)</div>
</div>
<div class="row">
<div id="game5" class="fav">Game 5 (fav)</div>
<div id="game6">Game 6</div>
</div>
<div class="row">
<div id="game7">Game 7</div>
<div id="game8"class="fav">Game 8 (fav)</div>
</div>
我需要按收藏夹(class=fav
)对这些进行排序。这就是我为此做的事情:
var favs = [];
var rest = [];
var items = $('body').find('.row').each( function() {
$(this).children('div').each( function(i) {
if ( $(this).hasClass('fav') ) {
favs.push( $(this) );
}
else {
rest.push( $(this) );
}
});
});
我的问题是我需要检查每个项目,items
其中将是<div>
ofclass=row
并将子项替换<divs>
为id=game#
. 这是我的尝试:
$(items).each( function() {
$(this).children('div').each( function() {
if ( favs.length == 0 ) {
//use rest[]
myText = $(rest[0]);
$(this).text( $(myText).text() );
rest.splice(0, 1);
}
else {
//use favs[];
toUse = $(favs[0]);
$(this).text( $(toUse).text() );
favs.splice(0, 1);
}
});
});
看起来正在发生的事情是,当我开始覆盖当前 div 的文本时,它正在替换我rest
数组中的某些内容。我已经确定了 1000 次rest
不包含任何这些值,但它们仍然被打印出来。这是输出的样子:
Game 4 (fav)
Game 5 (fav)
Game 8 (fav)
Game 4 (fav)
Game 5 (fav)
Game 8 (fav)
Game 8 (fav)
Game 8 (fav)
所以第 4 场 (fav)、第 5 场 (fav) 和第 8 场 (fav) 应该进入favs
并且它们被正确打印出来,前三个之后的所有内容都是错误的。
结果应该是:
Game 4 (fav)
Game 5 (fav)
Game 8 (fav)
Game 1
Game 2
Game 3
Game 6
Game 7
有人可以提供一些可能导致这种情况的见解吗?
谢谢