Получить элементы из селектора Jquery через индекс - PullRequest
0 голосов
/ 03 февраля 2020

Мне нужно перебрать элементы селектора jQuery и получить определенные данные от каждого элемента. Более конкретно, мне нужно получить от них теги <p>.
Функция .get(index) работает хорошо, и она получает правильный элемент, но тогда я не могу получить элементы <p>.

var n_rows = $('#r_data_5').text();
var data = $('#datos_ocultos > ul > li');
var index = 0;
for (let i = 0; i< parseInt(n_rows); i++){
 for(let j=index; j<4;j++){
  var a = data.get(index).find('#r_data_0').text(); //this is getting an error
 }
}
<div id="datos_ocultos" style="display: none;">
 <p class="report_data" id="r_data_5">
  <t t-esc="number_rows" />
  </p>
  <ul>
   <t t-foreach="report_ids" t-as="report">
    <t t-if="report.teacher_id and report.subject_id">
     <li>
      <p class="report_data" id="r_data_0">
       <t t-esc="report.teacher_id.name " />
      </p>
      <p class="report_data" id="r_data_1">
       <t t-esc="report.subject_id.display_name " />
      </p>
      <p class="report_data" id="r_data_2">
       <t t-esc="report.course_id.display_name " />
      </p>
      <p class="report_data" id="r_data_3">
       <t t-esc="report.teacher_id.work_email " />
      </p>
//more code

Ошибка: Uncaught TypeError: data.get (...). Find не является функцией

enter image description here

Ответы [ 3 ]

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

.get(ix) дает DOMNode по этому индексу. Вы хотите использовать .eq(ix), чтобы получить объект jQuery, чтобы иметь возможность выполнять .find операции и c.

Вы также можете использовать узел DOM в качестве контекста для селектора:

var a = $('.r_data_0', data.get(index)).text();

Обратите внимание, что я обновил селектор для поиска по классу, а не по идентификатору. Это, конечно, не будет работать без соответствующего изменения в разметке.

Это изменение необходимо выполнить, поскольку идентификаторы должны быть уникальными в документе, а селекторы работают на основе этого предположения.

0 голосов
/ 03 февраля 2020

Вы можете получить теги p от html, например:

$('ul li').each(function()
{
  console.log( this.innerHTML); // This is your p tags
});
0 голосов
/ 03 февраля 2020

Почему бы не использовать простой each итератор?

$('#datos_ocultos ul li').each(function(){
    var a = $(this).find('#r_data_0').text();
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...