JQuery attr () не является функцией, как превратить его в объект? - PullRequest
0 голосов
/ 06 февраля 2020

У меня ошибка с attr() в jQuery - это не функция. Я понимаю проблему, мой элемент не находится в DOM, и я должен превратить его в объект. Однако я не понимаю, как это сделать.

<div class="progress progress_height shadow">
  <div id="progress_bar" class="progress-bar bg-info pg-width" role="progressbar" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100"></div>
</div> 
// Works
$("#progress_bar").text(iTempsMax); 

// Doesn't works
$("#progress_bar").attr("aria-valuenow").val(iTempsMax);

Как я могу превратиться в объект для последней строки JS?

Ответы [ 2 ]

1 голос
/ 06 февраля 2020

Я понимаю проблему, мой элемент не находится в DOM, и я должен превратить его в объект

Это не проблема.

Проблема заключается в потому что attr() возвращает строку, а не jQuery объект, поэтому вы не можете связать val() с ней. Вам необходимо разделить вызовы к одному и тому же объекту jQuery.

let $el = $("#progress_bar");
let valuenow = $el.attr("aria-valuenow");
$el.val(iTempsMax); // set the value

В качестве альтернативы, сначала установите val(), а затем получите атрибут, хотя это потенциально запутывает вызов val().

let valuenow = $("#progress_bar").val(iTempsMax).attr("aria-valuenow");

Использование этого шаблона является вопросом личного предпочтения перед ясностью или краткостью кода:

С другой стороны, если вы пытаетесь only , установите значение атрибут aria-valuenow (а не атрибут value самого элемента), тогда вам нужно пропустить вызов val() и передать второй аргумент attr(), например:

$("#progress_bar").attr("aria-valuenow", iTempsMax);
0 голосов
/ 06 февраля 2020

Вы пытаетесь изменить значение вашего атрибута? Функция attr () принимает второй аргумент для установки этого:

$("#progress_bar").attr("aria-valuenow", iTempsMax)

https://api.jquery.com/attr/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...