2013-04-30 43 views
2

我想要一些簡單的(?),來計算列表項的數量並將其附加到父div的列表中。問題是它總是取最後一個值,因爲你可以看到第一個列表有4個項目,並說4/2這應該是4/4 ..如何解決這個問題?計算每個列表單獨列表項的數量並追加

感謝

演示: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) 
}); 

回答

1

你是總是指相同的清單...你應該使用這個:

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

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

+0

謝謝,正是我需要的! – Yunowork 2013-05-01 18:17:42

+0

在所有給出的答案中,平均而言,這是所有瀏覽器中最慢的答案。只是爲了感興趣。 – Xotic750 2013-05-01 19:51:51

2

像這樣的東西應該工作:

$(".list_slides").each(function() { 
    var list_slides = $(this).find(".list_slides_pagination li a"); 
    list_slides.each(function() { 
    $(this).append("/" + list_slides.length); 
    }); 
}); 
1

您是否在尋找something like this?。如果是,則用下面的辦法

$(".list_slides_pagination").each(function() { 
    var num_li = $('li', $(this)).length 
    $('li a', $(this)).each(function() { 
     $(this).html($(this).html() + '/' + num_li); 
    }) 
}); 
  1. <li>
  2. 每個<ul>
  3. 計數遍歷每個<a><ul>內追加一條數到它
+0

就這麼你知道,從jQuery 1.4開始[html函數](http://api.jquery.com/html/#html-functionindex--oldhtml)可以像這樣重寫:'$(this ).html(函數(i,html){返回html +'/'+ num_li;});' – Mottie 2013-04-30 14:58:27

+0

@Mottie感謝您爲頁面添加有用信息(y)! – Ejaz 2013-04-30 16:09:14

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) 
}); 

Working JSFIddle

+0

謝謝Rahul,工作正常! – Yunowork 2013-05-01 18:17:58

1

使用該代碼:

$(".list_slides_pagination").each(function() { 
    list_slides_count = $(this).find("li").length; 
    $(this).find('a').each(function(){   
     $(this).append("/" + list_slides_count); 
    }) 
}); 
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,不只是我的,所以我們有一個性能嚮導。

+0

那麼,這將是因爲我不會使用jQuery這個,但香草的JavaScript(思考forEach),所以我直接翻譯它。但是你可以擴展爲什麼一個循環是一個壞主意。 – Xotic750 2013-04-30 14:32:33