Підрахунок кількості тегів опцій у виділеному тезі jQuery


159

Як підрахувати кількість <option>s в <select>елементі DOM за допомогою jQuery?

<select data-attr="dropdown" id="input1">
  <option value="Male" id="Male">Male</option>
  <option value="Female" id="Female">Female</option>
</select>

Я хочу знайти кількість <option>тегів у <select>елементі DOM, оскільки з цим я хочу відкрити панель налаштувань із цією кількістю полів введення з відповідним значенням параметра у спадному вікні в ньому та знову змінити його в попередньому перегляді панель.

Наведене вище спадне вікно знаходиться на моїй панелі попереднього перегляду, яка генерується jQuery.

Відповіді:



51

Рішення W3C:

var len = document.getElementById("input1").length;

5
Варіація цього методу із сучасним JavaScript буде var len = document.querySelector("#input1").length;
Якоб Нельсон,

22

Ви можете використовувати властивість будь-якої довжини, і lengthтоді краще виконання size.

$('#input1 option').length;

АБО ви можете використовувати функцію розміру, як

$('#input1 option').size(); 

Демо


2
Це не дає нічого, що відповіді з 2009 року також не давали.
TylerH

18

Ваше запитання трохи заплутане, але припускаючи, що ви хочете відобразити кількість варіантів на панелі:

<div id="preview"></div>

і

$(function() {
  $("#preview").text($("#input1 option").length + " items");
});

Не впевнений, що я розумію решту вашого питання.


14

У вікні опцій з декількома опціями ви можете скористатися $('#input1 :selected').length;для отримання кількості вибраних варіантів. Це може бути корисно для відключення кнопок, якщо певна мінімальна кількість варіантів не виконана.

function refreshButtons () {
    if ($('#input :selected').length == 0)
    {
        $('#submit').attr ('disabled', 'disabled');
    }
    else
    {
        $('#submit').removeAttr ('disabled');
    }
}

Я виявив, що це спрацювало після зняття $('#input1 :selected').length; допоміжної документації брекетів api.jquery.com/length
Леонард Каканде

6

Гаразд, у мене було кілька проблем, тому що я був всередині

$('.my-dropdown').live('click', function(){  
});

У мене було кілька крапок на своїй сторінці, тому я використовував клас.

Моє спадне меню автоматично заповнювалося запитом ajax, коли я натискав його, тому у мене був лише елемент $ (це)

так...

Я повинен був зробити:

$('.my-dropdown').live('click', function(){
  total_tems = $(this).find('option').length;
});

6

Найкраща форма - це така

$('#example option').length

Це рішення, яке стосується лише коду, було запропоновано Садихасаном на 4 роки раніше. Використання lengthбуло опубліковано Карімом79 9 роками раніше. Цю відповідь можна сміливо викреслити зі сторінки, оскільки вона є абсолютно зайвою.
mickmackusa

-1

Ще один підхід, який може бути корисним.

$('#select-id').find('option').length

1
Питання не запитує кількість лише вибраних <option> s.
користувач4642212
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.