2013-08-25 59 views
0

我想動態插入鏈接返回到網頁的每個部分結束時的文檔的頂部(可悲地說,但它是基於表格的佈局)。我使用的是jQuery filter()選擇器,雖然我沒有得到任何錯誤,但它沒有對瀏覽器輸出做任何更改。當我使用變量alert()時,它說Object object。我知道問題出在我定義過濾器的地方,但我找不到類似的例子,我不知道如何解決。複雜的jQuery過濾器()不工作

下面的代碼:

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鏈接。

回答

0

那是因爲你在比較兩個不同的對象,始終是false,你應該使用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 
+0

設我知道你什麼時候完成編輯;) – ygesher

+0

好吧,我會打電話給你;)。 – undefined

+0

你很幸運,出於某種原因,在你之前發佈了一個答案的人,不太透徹但也正確,他刪除了他的帖子!如果他沒有,我會做出一個困難的決定,在標出更完整的答案或更迅速的答案之間。 – ygesher