Парсинг строки таблицы <tr>

326
11 июня 2017, 18:03

Доброго времени суток! Есть некая таблица 4x4, необходимо выбрать строку и разбить столбцы, выбранной строки(выбранной строке присваивается уникальный идентификатор "tabindex=0").

Мое решение:

$("tbody").click(function () {
        var itemId = $("tbody").find("[tabindex='0']").find("td:eq(0)").html(); // первый элемент td
        var itemOb = $("tbody").find("[tabindex='0']").find("td:eq(1)").html(); // второй элемент td
        var itemCn = $("tbody").find("[tabindex='0']").find("td:eq(2)").html(); // третий элемент td
        var itemZn = $("tbody").find("[tabindex='0']").find("td:eq(3)").html(); // четвертый элемент td
    });

Может можно сделать как-то лучше, а еще в моем варианте, при клике каждый раз будет выбираться значение выбранной строки, как сделать так что бы значение выбиралось один раз?

Answer 1

1) Сохранить тело вашей таблице в переменную, искать в переменной

var tbody = $("tbody").find("[tabindex='0']"); 
var alreadyClicked = false; 
$("tbody").click(function() { 
  if (!alreadyClicked) { 
    alreadyClicked = true; 
    var itemId = tbody.find("td:eq(0)").html(); // первый элемент td 
    var itemOb = tbody.find("td:eq(1)").html(); // второй элемент td 
    var itemCn = tbody.find("td:eq(2)").html(); // третий элемент td 
    var itemZn = tbody.find("td:eq(3)").html(); // четвертый элемент td 
    console.log(itemId); 
    console.log(itemOb); 
    console.log(itemCn); 
    console.log(itemZn); 
  } 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> 
<table rules="all" border="1"> 
  <tbody> 
    <tr tabindex="0"> 
      <td>Id</td> 
      <td>Ob</td> 
      <td>Cn</td> 
      <td>Zn</td> 
    </tr> 
  </tbody> 
</table>

2) Если некритично работать не с кучей переменных, а с объектом, то можно еще сделать так:

var tbody = $("tbody").find("[tabindex='0']"); 
var alreadyClicked = false; 
$("tbody").click(function() { 
  if (!alreadyClicked) { 
    alreadyClicked = true; 
    var item = {}; 
    var keys = ['id', 'ob', 'ch', 'zn']; 
    for (var i = 0; i < 4; i++) { 
      item[keys[i]] = tbody.find("td:eq(" + i + ")").html(); 
    } 
    console.log(item); 
  } 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> 
<table rules="all" border="1"> 
  <tbody> 
    <tr tabindex="0"> 
      <td>Id</td> 
      <td>Ob</td> 
      <td>Cn</td> 
      <td>Zn</td> 
    </tr> 
  </tbody> 
</table>

READ ALSO
Создать dql запрос к базе

Создать dql запрос к базе

Как можно создать dql запрос к базе в SonataAdminУ меня есть mySQL запрос, его нужно перевести в dql, или как-то заюзать его в таком формате, но я не знаю...

181
Построить точечный график

Построить точечный график

Какой самый простой способ построить точечный график при помощи Java?

288
Создать элемент листа с картинкой и именем

Создать элемент листа с картинкой и именем

Есть окно приложение которое содержит листНужно, чтобы каждый элемент листа отображался как песня в плеере

279