jQuery val()未定义

时间:2010-06-14 15:33:35

标签: javascript jquery css jquery-selectors

我们有以下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 个答案:

答案 0 :(得分:6)

注意jquery.children()只会返回直接/直接子项,并且由于您的输入不是<TR>的直接/直接子项,因此您将无法获得任何输入。

我可以建议这样的事情

$("input[name='line_config']", tag.closest('tr'))

答案 1 :(得分:4)

子元素返回tr元素的直接子元素。您应该尝试查找即:

values = tag.closest('tr').find("input[name='line_config']").val();

答案 2 :(得分:1)

不确定这是否是整个问题,但当您说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
});
相关问题