【问题标题】:Finding parent class and id查找父类和id
【发布时间】:2011-02-21 16:22:05
【问题描述】:

在无数次尝试之后我无法完成这项工作?

<script type="text/javascript">
    $("td input").focusout(function() {
      var column = $(this).parent('td').attr('class');
      var row = $(this).parent('tr').attr('id');
      $('#dat').HTML(row+" "+column);
    }); 
</script>

html 看起来像这样:

<tr class="numbers" id="1">
<td class="a" align="right">1</td>
<td class="b"><input class="input" type="text" value=""/></td>
<td class="c"><input class="input" type="text" value=""/></td>

<td class="d"><input class="input" type="text" value=""/></td>
<td class="e"><input class="input" type="text" value=""/></td>
<td class="f">0</td>
<td class="g"><input class="input" type="text" value=""/></td>
</tr>

谁能指出我可能出错的正确方向?

【问题讨论】:

  • 预期结果是什么,目前的结果是什么?
  • 好吧,我想提取 td 的类,以了解输入的位置以及要精确的行
  • 如果您要创建有效的 HTML 文档,则需要为 ID 指定一个以 a-z/A-Z (w3.org/TR/html4/types.html#h-6.2) 开头的值。

标签: javascript jquery jquery-selectors jquery-events


【解决方案1】:

注意一定要小写

$('#dat').HTML(row+" "+column);

.html

$(this).parent('tr')

为空,输入不能有父TR

你也可以使用这个

.closest( selector, [ context ] ) function

【讨论】:

  • 然后我将如何以适当的方式爬上 dom 树到 tr 所在的位置?
  • 要找到最近的封闭 tr,请使用 .closest('tr'),它会执行此操作 - 一直爬到找到为止。
  • closestparents 更好,因为它只会返回一个元素,如果你在另一个元素中有一个表,parents 方法会带来错误的结果。请参阅api.jquery.com/closest 进行比较
【解决方案2】:

试试:

$(this).closest('td').attr('class')

在代码中的适当位置。身份证也是一样。

【讨论】:

    【解决方案3】:

    您的代码大部分看起来都是正确的,只需修复以下问题:

    $('#dat').HTML(row+' ' +column);
    

    到这里:

    $('#dat').html(row + ' ' + column);
    

    还有这个:

    $(this).parent('tr').attr('id');
    

    到这里:

    $(this).parents('tr').attr('id');
    

    【讨论】:

      【解决方案4】:

      您想使用.parents() 函数而不是.parent()

      原因,来自文档,我的高亮显示。

      给定一个 jQuery 对象,它表示 一组 DOM 元素,.parent() 方法允许我们搜索 DOM 中这些元素的父级 树并构造一个新的 jQuery 对象 从匹配的元素。 该 .parents() 和 .parent() 方法是 类似,只是后者只有 在 DOM 上向上移动一层 树。

      【讨论】:

      • 原因是大写的.HTML。但公认的答案是最好的。
      • 不仅 .HTML 大写,而且 .focusout 在 Firefox 或 Opera 中都不起作用。
      • @Gert G,这令人惊讶。我认为所有的 jQuery 函数几乎都适用于所有浏览器。
      • 不,这些实际上都不是我没有工作的主要原因我没有将脚本封装在 $(function () { });
      猜你喜欢
      • 2022-09-27
      • 1970-01-01
      • 2017-01-02
      • 2018-06-13
      • 1970-01-01
      • 2022-09-26
      • 2016-10-02
      • 2010-10-07
      • 1970-01-01
      相关资源
      最近更新 更多