При переходе по группе элементов, использующих селектор jquery, есть способ узнать, сколько элементов есть в коллекции?
Jquery $('. class'). each() сколько элементов?
Ответ 1
Если вы используете синтаксис цепочки:
$(".class").each(function() {
// ...
});
... Я не думаю, что существует какой-либо (разумный) способ для кода внутри функции each
, чтобы узнать, сколько там элементов. (Неразумные способы включают повторение селектора и использование index
.)
Но достаточно легко сделать коллекцию доступной для функции, которую вы вызываете в each
. Вот один из способов сделать это:
var collection = $(".class");
collection.each(function() {
// You can access `collection.length` here.
});
Как несколько запутанный вариант, вы можете преобразовать объект jQuery в массив, а затем использовать массив forEach
. Аргументы, которые передаются в обратный вызов forEach
, - это посещаемая запись (то, что jQuery дает вам как this
и как второй аргумент), индекс этой записи и массив, на который вы ее вызывали:
$(".class").get().forEach(function(entry, index, array) {
// Here, array.length is the total number of items
});
Это предполагает, по крайней мере, смутно современный движок JavaScript и/или прокладку для Array#forEach
.
Или, если на то пошло, дайте себе новый инструмент:
// 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 return value is ignored unless it `=== 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);
});
};
Использование:
$(".class").loop(function(element, index, set) {
// Here, set.length is the length of the set
});
Ответ 2
Используйте свойство .length
. Это не функция.
alert($('.class').length); // alerts a nonnegative number
Ответ 3
Если вы используете версию jQuery, которая меньше версии 1.8, вы можете использовать $('. class'). size(), которая принимает нулевые параметры. Для получения дополнительной информации о методе .size() см. документация.
Однако, если вы используете (или планируете обновление) до 1,8 или более, вы можете использовать свойство $('. Class'). Length. Подробнее о свойствах .length см. документация.
Ответ 4
Вы имеете в виду как length
или size()
?