2015-07-26 3 views
1

Я пытаюсь получить доступ к данным в строке таблицы. Данные могут быть в теге или в виде текста во входе или как флажок на входе или кнопку.

В качестве демонстрации у меня есть небольшой стол: -

<table border="1"> 
    <tr> 
    <td dir="ltr" id="test1" class="tLine" nowrap>Column One</td> 
    <td><input type="checkbox" name="vehicle" value="Car" checked>Check Box.</td> 
    <td> 
     <button type="button" class="clicked">Update</button> 
    </td> 
    </tr> 
</table>  

Javascript является: -

<script> 
    $(".clicked").click(function() { 
     var $row = $(this).closest("tr");  // Finds the closest row <tr> 
     var $tds = $row.find("td");    // Finds all children <td> elements 
     $.each($tds, function() {    // Visits every single <td> element 
      console.log($(this).text());  // Prints out the text within the <td> 
     }); 
     console.log($tds[0].tagName); // 'TD' 
     console.log($tds[1].tagName); // 'TD' 
     $.each($tds, function(index, value) { // Visits every single <td> element 
      console.log($tds[index].tagName); // 'TD' 
      console.log($(this).tagName); // Undefined 
      console.log($(each).tagName); // Fails 
     }); 
    }); 
</script> 

Что именно является каждый в 2-ом цикле и как его использовать? Почему неопределенное значение $ (this) .tagName?

После того, как я получаю TD элемент я могу проверить, что содержание, глядя на детей ...

Я также глядя на параметры JavaScript/JQuery таблицы как SlickGred, jsgrid и DataTables, но хотелось бы понять, сначала код.

ответ

2

Что такое каждый во втором цикле и как его использовать?

Если вы имеете в виду один элемент в коллекции, это value, второй параметр в вашей функции обратного вызова. Но с $.each вы также можете сделать это с помощью this.

Почему значение $ (this) .tagName не определено?

Поскольку $(this) создает объект JQuery, и нет tagName свойства в объекте JQuery. Вы можете сделать this.tagName, или value.tagName.

Причина, почему $tds[0].tagName работы является то, что хотя $tds является объектом JQuery, он также является «массив типа» объект, так как все отдельный элемент, который заворачивает в него помещен в свойствах/показатели, как '0', '1' т.д. Поэтому, когда вы делаете $tds[0], вы получаете фактический элемент и имеет свойство tagName.

+0

Вы объяснили, что польза хорошо, спасибо – jimscafe

2

$(this) возвращает объект jQuery. this - DOMElement.

+0

Я не нашел в этом объяснения ситуации, – jimscafe