我有这个div容器:
<div id="game_rating">
<span class="rating_star">
<img src="../images/star.png">
</span>
<span class="rating_star">
<img src="../images/star.png">
</span>
<span class="rating_star">
<img src="../images/star_half.png">
</span>
<span class="rating_star">
<img src="../images/star_empty.png">
</span>
<span class="rating_star">
<img src="../images/star_empty.png">
</span>
</div>
现在我想用类“rating_star”来反转跨度的顺序,所以它看起来像这样:
star_empty.png
star_empty.png
star_half.png
star.png
star.png
如何使用JavaScript / jQuery实现这一点(必须在像IE8这样的旧浏览器中工作)?
答案 0 :(得分:2)
这样做:
$("#game_rating").each(function(){
var $this = $(this);
$this.children().each(function(){
$this.prepend(this);
});
});
或者您甚至可以创建一个通用的jQuery函数:
jQuery.fn.reverseNodes = function() {
return this.each(function(){
var $this = $(this);
$this.children().each(function(){
$this.prepend(this);
});
});
};
$('#game_rating').reverseNodes();
这是有效的DEMO。
答案 1 :(得分:1)
追加和前置移动会移动DOM中的元素,因此只需从上到下进行迭代并预先设置跨度,顺序就会反转。
$.each($('#game_rating > span'), function() {
$(this).prependTo($(this).parent());
});
或Array.reverse()
$('#game_rating').append($('#game_rating > span').get().reverse());
没有jQuery
var game = document.getElementById('game_rating');
var spans = game.getElementsByTagName('span');
for (var i=spans.length; i--;) {
game.appendChild(spans[i]);
}
答案 2 :(得分:1)
也许是jquery:
var parent = $('#game_rating');
var spans = parent.children('span');
parent.append(spans.get().reverse());