2013-08-25 3 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" и вставить строку с a top ссылка.

ответ

0

Это потому, что вы сравниваете 2 различных объектов, которые всегда 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

Смежные вопросы