复杂的jQuery过滤器()不起作用

时间:2013-08-25 09:29:42

标签: javascript jquery filter

我试图动态插入链接到一个网页的每一个部分的最后返回到文档的顶部(痛心地说,但它是基于表格的布局)。我正在使用jQuery filter()选择器,虽然我没有收到任何错误,但它没有对浏览器输出进行任何更改。当我对变量使用alert()时,它会显示Object object。我理解问题出在我定义过滤器本身的行中,但我找不到类似的例子,我不知道如何修复它。

以下是代码:

HTML

<table>
  <tr class="head"><td colspan="2">section title 1 </td></tr>
  <tr><td>text</td>
    <td><img /></td>
  </tr>
  <tr><td>text</td>
    <td>< img /></td>
  </tr>
  <tr class="head"><td colspan="2">section title 2 </td></tr>
  <tr><td>text</td>
    <td><img /></td>
  </tr>
  <tr><td>text</td>
    <td>< img /></td>
  </tr>
<!-- you get the point -->

的JavaScript

$(document).ready(function(){
    var lastRow = $('tr').filter(function(){
        return $(this).next()==$(".head"); // Here's the problem, IMO
    });
    var a = '<tr class="toTop"><td class="top" style="text-align:right" colspan="2"><a href="#main">go to top &uarr;</a></td></tr>';
    lastRow.after(a);
});

该脚本尝试选择行class="head"前的每一行,并插入一行top链接。

1 个答案:

答案 0 :(得分:0)

那是因为您要比较总是false的2个不同对象,您应该使用is方法或length属性:

var lastRow = $('tr').filter(function(){
    return $(this).next(".head").length;         
    // return $(this).next().is(".head"); 
});

但是,我建议使用.prev()方法:

$('tr.head').prev(); // selects the previous sibling tr element