如何逆转图像的顺序

时间:2014-02-01 20:27:29

标签: javascript jquery reverse

我有这个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这样的旧浏览器中工作)?

3 个答案:

答案 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());
});

FIDDLE

Array.reverse()

$('#game_rating').append($('#game_rating > span').get().reverse());

FIDDLE

没有jQuery

var game  = document.getElementById('game_rating');
var spans = game.getElementsByTagName('span');

for (var i=spans.length; i--;) {
    game.appendChild(spans[i]);
}

FIDDLE

答案 2 :(得分:1)

也许是jquery:

var parent = $('#game_rating');
var spans = parent.children('span');
parent.append(spans.get().reverse());