Как мне заполнить массив javascript атрибутами HTML? - PullRequest
1 голос
/ 04 февраля 2020

У меня есть флажки в строках таблицы с атрибутом «идентификатор результата». Как заполнить массив javascript значениями, хранящимися в флажке 'result-id', внутри строки таблицы.

Я уже понял, как получить доступ к данным в jquery, теперь я просто хочу чтобы хранить эти данные внутри массива.

Это выглядит примерно так:

   <td>
      <input result-id="@item.Id" type="checkbox" />
   </td>

Это jquery У меня сейчас, он добавляет только один элемент (последний нажат) ID флажка)

        $(tableBody).find('tr').each(function () {
            if ($(this).find('input:checkbox').prop("checked") == true) {
                resultList.fill(parseInt($(this).find('input:checkbox').attr('result-id')));
            }
        });

1 Ответ

2 голосов
/ 04 февраля 2020

Вы хотите:

  • Отфильтровать непроверенные флажки (:not(:checked) или .filter, ...)
  • Использовать map в результате чтобы получить набор jQuery, содержащий значения result-id (возвращая this.getAttribute("result-id") или $(this).attr("result-id"))
  • Используйте get для получения фактического массива

Например:

var array = $(tableBody).find("tr input:checkbox:not(:checked)")
    .map(function() {
        return this.getAttribute("result-id");
    })
    .get();

Использует псевдокласс jQuery -specifi c :checked, чтобы смотреть только на отмеченные флажки, и напрямую использует DOM для получения значения атрибута.

Вы также можете сделать это без использования jQuery -specifi c селектора:

var array = $(tableBody).find("tr input[type=checkbox")
    .filter(function() { return this.checked; })
    .map(function() {
        return this.getAttribute("result-id");
    })
    .get();

Или вообще без использования jQuery (здесь я предполагаю, что tableBody - DOM элемент, не набор jQuery, а современный браузер):

const array = Array.from(tableBody.querySelectorAll("tr input[type=checkbox"))
    .filter(({checked}) => checked)
    .map(cb => cb.getAttribute("result-id"));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...