jQuery val () не определено - PullRequest
2 голосов
/ 14 июня 2010

У нас есть следующая таблица XHTML:

  <tr class="encabezado">
    <th scope="col" width="2%">1</th>
    <th scope="col" width="2%">2</th>
    <th scope="col" width="2%">3</th>
    <th scope="col" width="2%">4</th>
    <th scope="col" width="2%">5</th>
    <th scope="col" width="2%">...</th>
    <th scope="col" width="2%">31</th>
  </tr>
  <tr>
    <th scope="row">Area 1<input name="line_config" type="hidden" value="0,5,50" /></th>
    <td class="gantt"> </td>
    <td class="gantt"> </td>
    <td class="gantt"> </td>
    <td class="gantt"> </td>
    <td class="gantt"> </td>
    <td class="gantt">...</td>
    <td class="gantt"> </td>
  </tr>
  <tr>
    <th scope="row">Area 2 <input name="line_config" type="hidden" value="0,0,10" /></th>
    <td class="gantt"> </td>
    <td class="gantt"> </td>
    <td class="gantt"> </td>
    <td class="gantt"> </td>
    <td class="gantt"> </td>
    <td class="gantt">...</td>
    <td class="gantt"> </td>
  </tr>

Когда происходит щелчок по элементу TD.gantt, мы хотим, чтобы jQuery получал значение из тега input [name = 'line_config']. Мы пробуем следующий код jQuery, но val () вернул undefined:

$(document).ready(function() {
    function sum_day(tag, status, column) {
        var total_day = 0;
        var index_pos = 0;
        var values = 0;

        values = tag.closest('tr').children("input[name='line_config']").val();
        alert(values); //Return undefined

        return total_day;
    }

    $('td.gantt').click(function() {
        var gantt_tag = $('td.preop');

        $(this).toggleClass('preop');
        sum_day(gantt_tag, 'preop', $(this).index());
    });
});

Правильно ли мы оцениваем путь? Если кто-то может помочь нам, мы ценим ... =)

Ответы [ 3 ]

6 голосов
/ 14 июня 2010

Примечание. Jquery.children () будет возвращать только прямые / непосредственные дочерние элементы, и поскольку ваш ввод не является прямым / непосредственным дочерним элементом <TR>, вы не получите никаких входных данных.

Могу ли япредложить что-то вроде этого

$("input[name='line_config']", tag.closest('tr'))
4 голосов
/ 14 июня 2010

children возвращают непосредственных потомков элемента tr. Вы должны попробовать найти i.e.:

values = tag.closest('tr').find("input[name='line_config']").val();
1 голос
/ 14 июня 2010

Не уверен, что это вся проблема, но когда вы говорите var gantt_tag = $('td.preop');, нет элементов с классом preop:

$('td.gantt').click(function() {
  var gantt_tag = $('td.preop');
  alert(gantt_tag.size()); // returns 0, i.e. no elements are matched
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...