2

リスト項目の数を計算し、それを親 div のリストに追加するために、単純な (?) ことを試みています。問題は、最初のリストに 4 つの項目があり、これが 4/4 であるべきところに 4/2 と表示されていることがわかるように、常に最後の値を取っていることです.. これを解決するにはどうすればよいですか?

ありがとう

デモ: http://jsfiddle.net/tZLG9/

コード:

$(".list_slides_pagination li a").each(function() {
    list_slides_count = $(".list_slides").find(".list_slides_pagination").length;
    $(this).append("/" + list_slides_count);
    console.log(list_slides_count)
});
4

6 に答える 6

1

このようなものをお探しですか?. はいの場合、次のアプローチを使用します

$(".list_slides_pagination").each(function () {
    var num_li = $('li', $(this)).length
    $('li a', $(this)).each(function () {
        $(this).html($(this).html() + '/' + num_li);
    })
});
  1. それぞれ<ul>
  2. <li>それの数を数える
  3. <a>の内部をそれぞれトラバース<ul>し、カウントするものを追加します
于 2013-04-30T14:26:54.170 に答える
1

常に同じリストを参照しています...これを使用する必要があります:

$(this).closest(".list_slides_pagination").find("li").length;

例: http: //jsfiddle.net/scaillerie/tZLG9/3/

于 2013-04-30T14:27:10.617 に答える
1

以下のコードを使用

$(".list_slides_pagination li").each(function() {
            list_slides_count =     $(this).parent().find("li").length;
            $(this).append("/" + list_slides_count);

            console.log(list_slides_count)
 });

ワーキングJSFIddle

于 2013-04-30T14:27:17.470 に答える
1

そのコードを使用してください:

$(".list_slides_pagination").each(function() {
    list_slides_count = $(this).find("li").length;
    $(this).find('a').each(function(){          
        $(this).append("/" + list_slides_count);
    })
});
于 2013-04-30T14:29:06.247 に答える
1

これはjqueryでうまくいくはずです(ただし、最も簡潔なjquery構文ではないかもしれません)

$(".list_slides_pagination").each(function (index1, element) {
    var items = $("li a", element),
        count = items.length;

    items.each(function (index2, item) {
        item.textContent = item.textContent + "/" + count;
    });
});

jsfiddleについて

そして、これが私の元のJavaScriptの考えで、上記に翻訳しました。@roasted へのデモンストレーション用

Array.prototype.forEach.call(document.querySelectorAll(".list_slides_pagination"), function (element) {
    var items = element.querySelectorAll("li a"),
        count = items.length;

    Array.prototype.forEach.call(items, function (item) {
        item.textContent = item.textContent + "/" + count;
    });
});

jsfiddleについて

そしてここに、私だけでなく与えられたすべてのソリューションのjsperfがあるので、パフォーマンス ガイドが得られます。

于 2013-04-30T14:29:10.563 に答える