0

Webページの一部の要素が表示されるように並べ替えたい。この質問への回答に続いて、私は次のコードを持っています:

<html>
    <head>
        <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>

        <script>
        function reorder() {
            var grp = $(".myItems").children();
            var cnt = grp.length;

            var temp,x;
            for (var i = 0; i < cnt; i++) {
                temp = grp[i];
                x = Math.floor(Math.random() * cnt);
                grp[i] = grp[x];
                grp[x] = temp;
            }
            $(grp).remove();
            $(".myItems").append($(grp));
        }
        </script>
    </head>

    <body onload="reorder();">
    <div class="myItems">
     <div class="item" title="Row 1">1</div>
     <div class="item" title="Row 2">2</div>
     <div class="item" title="Row 3">3</div>
    </div>
    </body>
</html>

私が抱えている問題は、<div>タグが表示される順序に応じて、タグのコンテンツも変更する必要があることです。この例では、titleタグの行識別子を変更する必要があります。

たとえば、更新後、考えられる結果は次のようになります。

    <div class="myItems">
     <div class="item" title="Row 1">2</div>
     <div class="item" title="Row 2">1</div>
     <div class="item" title="Row 3">3</div>
    </div>

また

    <div class="myItems">
     <div class="item" title="Row 1">3</div>
     <div class="item" title="Row 2">2</div>
     <div class="item" title="Row 3">1</div>
    </div>

表示される番号が変わっても、タイトルの順序は同じままであることに注意してください。

4

2 に答える 2

1

grpそれらをランダム化した後でループし、それぞれについて、属性titleをにリセットします。'Row '+iここで、i = index in array + 1
あなたがするなら、あなたはランダムなステップの間にこれをすることができます

grp[i].setAttribute('title','Row '+(i+1));
grp[x].setAttribute('title','Row '+(x+1));

.setAttributeこれにより、何度も呼び出すことになりますが、必要なループは1つ少なくなります。

于 2012-09-11T14:04:03.923 に答える
1

これを前に追加します$(grp).remove()

for(var i = 0; i < cnt; i ++) {
    grp[i].title = "Row " + (i + 1);
}
于 2012-09-11T14:05:41.440 に答える