Bir grup öğeyi jquery seçicilerini kullanarak döngü yaparken, koleksiyonda kaç öğe olduğunu öğrenmek için bir yol var mı?
cevap
Eğer zincirleme sözdizimi kullanıyorsanız .
(Mantıksız yolu. Seçiciyi tekrar ve index
kullanmanızı gerektirir) Ama bu each
içinde aradığınız işlevine toplama kullanılabilir hale getirmek için kolay yeterli. İşte bunu yapmak için bir yol var: Bir dizide için jQuery nesnesi dönüştürmek ve daha sonra kullanabilirsiniz, biraz dolambaçlı seçenek olarak
var collection = $(".class");
collection.each(function() {
// You can access `collection.length` here.
});
dizisi en forEach
.
$(".class").get().forEach(function(entry, index, array) {
// Here, array.length is the total number of items
});
:
forEach
'in geri arama için geçmiş olsun argümanlar (jQuery
ikinci argüman
this
olarak ve sıra sana verdiği) ziyaret edilen giriş, o giriş endeksi ve onu çağırdı dizi vardır
Bu, en az muğlak modern JavaScript motoru ve/veya Array#forEach
için bir shim varsayar.
Ya da hatta
Kendine yeni bir araç vermek:// Loop through the jQuery set calling the callback:
// loop(callback, thisArg);
// Callback gets called with `this` set to `thisArg` unless `thisArg`
// is falsey, in which case `this` will be the element being visited.
// Arguments to callback are `element`, `index`, and `set`, where
// `element` is the element being visited, `index` is its index in the
// set, and `set` is the jQuery set `loop` was called on.
// Callback's return value is ignored unless it's `=== false`, in which case
// it stops the loop.
$.fn.loop = function(callback, thisArg) {
var me = this;
return this.each(function(index, element) {
return callback.call(thisArg || element, element, index, me);
});
};
Kullanımı:
$(".class").loop(function(element, index, set) {
// Here, set.length is the length of the set
});
length
veya size()
mu demek istediniz?
Sanırım, ** döngü içinde ** demek. –
uzunluğu bir özellik değil, bir işlevdir. size() boyu döndüren bir işlevdir. – Orbit
@Matt "döngüde iken". Yine de böyle bir özelliğin çok pratik bir kullanım sağlayacağından emin değilim. –
.length
özelliğini kullanın. Bir fonksiyon değil.
$(".class").each(function() {
// ...
});
... Orada kaç nesne bilmek each
işlev içinde kodu için herhangi (makul) bir yolu vardır sanmıyorum:
alert($('.class').length); // alerts a nonnegative number
Teşekkürler, bunu yukarıda belirtildiği gibi düzeltdim. – kojiro
sizsiniz jQuery bir sürümünü kullanıyorsanız sürümü 1.8 Eğer $ kullanabilirsiniz daha az ('.class'). sıfır parametresini alan boyut(). .size() yöntemi hakkında daha fazla bilgi için bkz. documentation.
Ancak 1,8 veya daha büyük bir süreyi kullanıyorsanız (veya yükseltmeyi planlıyorsanız) $ ('. Class'). Length özelliğini kullanabilirsiniz. .length özelliği hakkında daha fazla bilgi için bkz. documentation.
- 1. Seçilen her öğe için jQuery birlikte çalışır
- 2. Dizi kaç öğe null değil?
- 3. İki yineleyici arasında kaç öğe var
- 4. jquery Öğe
- 5. Etkinlik delegasyonunun değerli hale gelmesi için kaç öğe var?
- 6. ListView her öğe
- 7. JQuery: öğe hariç
- 8. jQuery class özelliği vardır tüm div'leri olsun class özelliği
- 9. jquery ile ilk öğe dışındaki her şeyi gizler
- 10. Jquery Fade Fare, öğe
- 11. jquery son odaklanmış öğe
- 12. Jquery insertEğer öğe varsa
- 13. jQuery: Seçicinin kaç öğeye uyduğunu görün?
- 14. Öğe öğesini seçin ve jquery
- 15. jQuery her li
- 16. jQuery: her öğenin genişliğini alın ve özetleyin
- 17. Bir öğe tıklatıldıktan sonra JQuery seçicisi çalışmıyor
- 18. Her bir Getirme, Sayma ve Sorgulama işlemlerini kaç Datastore okuyor?
- 19. WPF Listesindeki her öğe için farklı öğe şablonu?
- 20. jQuery Öğe Rengi Alsın mı?
- 21. Jquery ile bir öğede öğe oluşturma
- 22. Çoklu öğe geçişlerini jquery ile değiştirme
- 23. jquery FadeIn Bir öğe önceki FadeOut sonra?
- 24. jquery - her/tıklama işlevi çalışmıyor
- 25. jQuery Sortable - Listedeki öğe sayısını sınırla
- 26. jQuery ajax her döngüde
- 27. jQuery: Her biri 0
- 28. her jQuery için bekle
- 29. AngularJS, class = class = bir değişken atamak için class =
- 30. Her seferinde bir sıradan iki öğe alın
Veya, 'length' değerinin kendisini dış alanda saklayın. –
@Matt: Ama bunu yapmak için, ve ayrıca "her" yi çağırmak için, en azından koleksiyonun kendisini en azından geçici olarak depolamaya ihtiyacım var.Ve neden * yapma *? –
Evet, tek çözüm. JQuery'nin koleksiyona geri bildirime fazladan bir argüman vermesi gerektiğini her zaman düşündüm. – lonesomeday