Подтвердить что ты не робот

Jquery $('. class'). each() сколько элементов?

При переходе по группе элементов, использующих селектор jquery, есть способ узнать, сколько элементов есть в коллекции?

4b9b3361

Ответ 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 см. документация.