0

リストアイテムがあり、各リストアイテムに次のspanようなタグがあるとします。<span class="pos">1st</span>これはから1になり5ます。つまり、1番目、2番目、3番目、4番目、および5番目になります。

並べ替え可能なリストなので、並べ替えた後。span各タグを番号とサフィックスで正しく更新したかったのです。ただし、以下のjsFiddleでは、そうではないことがわかります。

jsFiddle: http: //jsfiddle.net/weka/4GN37/

4

3 に答える 3

2
$('.list').children().each(function(i) {
    $('.pos', this).text(i + 1);
    this.id = 'item-' + (i + 1); // ids cannot start with a number
    // but changing ids is often a bad idea...
});

デモ: http: //jsfiddle.net/ThiefMaster/hhFYz/1/

接尾辞については、指定された数値に適切な接尾辞を返す関数を簡単に記述できます。

于 2012-06-14T08:59:40.440 に答える
2

これが1つの解決策です:

update: function (event, ui) {
    $(".list span.pos").html(function(i) {
        var suf = ["st", "nd", "rd"];
        return (i + 1) + (suf[i] || "th");
    });
}

デモ:http: //jsfiddle.net/4GN37/2/

于 2012-06-14T09:04:01.530 に答える
0

これがあなたの問題を解決するあなたのフィドルのフォークです。問題は、ループ内で、変更されていない既存のIDで子を参照しただけであるということです。あなたは彼らの新しい子の位置によってそれらを参照する必要がありました。

関連するコードは次のとおりです。

var children = $('ul.list').children();
while (loopy < 6) {
    //$("li#" + loopy + ".rank > span.pos").text(loopy);
    $('span.pos', children[loopy-1]).text(loopy);
    console.log("Set pos..... " + loopy);
    $(children[loopy-1]).attr("id", loopy);
    loopy++;
} // end loop
于 2012-06-14T09:08:31.440 に答える