Элемент соответствия jquery на основе идентификатора

Я новичок в JQuery. Застрял и был бы признателен за помощь. В настоящее время создается инструмент для сбора данных с определенной страницы. Страница выглядит так:

<table width="100%" border="0" align="center" cellpadding="3" cellspacing="1">
 <tbody>  //This is data group 1    
  <tr id="parent0">   //Record 1
    <td align="left"> <---------- text1 here -------> </td>
    <td align="left"> <---------- text2 here -------> </td>
    <td align="left"> <---------- text3 here -------> </td>
  </tr>    
  <tr id="parent0">   //Record 2
    <td align="left"> <---------- text1 here -------> </td>
    <td align="left"> <---------- text2 here -------> </td>
    <td align="left"> <---------- text3 here -------> </td>
  </tr>    
 </tbody>
</table>

<table width="100%" border="0" align="center" cellpadding="3" cellspacing="1">
 <tbody>  //This is data group 2    
  <tr id="child0">   //Record 1
    <td align="left"> <---------- text1 here -------> </td>
    <td align="left"> <---------- text2 here -------> </td>
    <td align="left"> <---------- text3 here -------> </td>
  </tr>    
  <tr id="child0">   //Record 2
    <td align="left"> <---------- text1 here -------> </td>
    <td align="left"> <---------- text2 here -------> </td>
    <td align="left"> <---------- text3 here -------> </td>
  </tr>    
 </tbody>
</table>

Ниже приведен фрагмент jquery:

ancestor = $(this).closest("tr[id]");

  matchedElement = $(this).first();
  originalBgColor = $(matchedElement).css('background-color');
  $(matchedElement).css('background-color', 'green');
  $(matchedElement).bind('click.annotator', function(event) {
    event.stopPropagation();
    event.preventDefault();
    self.port.emit('show',
      [
        document.location.toString(),
        $(ancestor).attr("child0"),
        $(matchedElement).text()
      ]

Я пытаюсь захватить все данные только <tr> блоки с идентификатором parent0 и child0.

В своем текущем рабочем состоянии инструмент собирает все данные в двух таблицах в виде текста. В идеале я хотел бы иметь возможность захватить все <TR> блоки отдельно, поместите их в массив, который я могу затем перебрать.

3 ответа

Решение
$('tr[id="child0"]').each(function() {
                         //this will be fired for each matched element
                         $(this).doSomething();
                      }
                     );

таким образом, вы получите все tr, чей идентификатор child0, проверьте эту ссылку для получения дополнительной ссылки http://api.jquery.com/category/selectors/

Похоже, что вы используете элементы ID, где вы должны использовать класс.

Вместо

<tr id="child0">
<tr id="parent0">

Сделай это

<tr class="child0">
<tr class="parent0">

В отличие от ID, вы можете присвоить одно и то же значение нескольким элементам с помощью атрибута class.

Затем вы можете выбрать их все, как это

$("tr.child0,tr.parent0").each(
                          function() {
                             //this will be fired for each matched element
                             $(this).doSomething();
                          }
                         )

Делай как это...

$('cite.fn:contains(blabla)').css('color', 'red');

Изменить: хотя это будет соответствовать "blablablabla", а также.

$('cite.fn').each(function () {
    if ($(this).text() == 'blabla') {
        $(this).css('color', 'red');
    }
});

Это должно быть более точным.

Изменить: На самом деле, я думаю, что это решение более элегантно:

$('cite.fn').filter(function () {
    return $(this).text() == 'blabla';
}).css('color', 'red');;
Другие вопросы по тегам