希望简化基于兄弟文本添加属性的方法

时间:2010-08-03 18:39:40

标签: jquery attr siblings

我想在一行中添加一个Title属性,并从隐藏的行的兄弟中检索该值,除非单击。我想让它足够通用,以便在某些屏幕没有带文本的隐藏行时进行处理。

这是第一个有效的传递:

$(function() {
  $("td.commandText pre").each(function(index) {
    $(this).parent().parent().prev().attr('Title', $(this).text());
  });
});

任何让这更优雅的想法?

以下是我正在使用的HTML表的示例:

<table class="maingrid">
  <thead>
    <tr>
      <th>Session ID</th>
      <th>User Name</th>
      <th>Start Time</th>
      <th>End Time</th>
    </tr>
  </thead><tbody>
    <tr class="record">
      <td id="174">174</td>
      <td>user1</td>
      <td>8/2/2010 4:00:09 PM</td>
      <td></td>
  </tr>
  <tr>
     <td class="details hide commandText" colspan="4">
       <pre>Sample Text to show as a tooltip</pre></td>
     </tr>
  <tr>
     <td class="details hide" colspan="4" style="color:red"><pre>no errors</pre></td>
  </tr>
    <tr class="record">
      <td id="175">175</a></td>
      <td>user1</td>
      <td>8/2/2010 4:00:09 PM</td>
      <td></td>
  </tr>
  <tr>
     <td class="details hide commandText" colspan="4">
       <pre>Sample Text to show as a tooltip</pre></td>
     </tr>
  <tr>
     <td class="details hide" colspan="4" style="color:red"><pre>no errors</pre></td>
  </tr>
</tbody>
</table>

1 个答案:

答案 0 :(得分:1)

您可以使用.closest()使其缩短一点,如下所示:

$(function() {
  $("td.commandText pre").each(function(index) {
    $(this).closest('tr').prev().attr('Title', $(this).text());
  });
});

除此之外,在这里获得的优雅并不多。