2009-10-22 3 views
1

Я новичок в JQuery и, возможно, пропущу очевидное, но как я могу отфильтровать таблицу с помощью селектора contains, но он ищет несколько строк, используя оператор OR. Другими словами, я хотел бы, чтобы строки, содержащие «Красный» ИЛИ «Желтый», были скрыты.JQuery Содержит селектор - несколько текстовых элементов

До сих пор у меня есть это, который работает, скрывая все строки, за исключением указанной даты:

$(function() 
{ 
    $('div#WebPartWPQ5 table.ms-summarycustombody tr:not(:contains("10/27/2009"))') 
     .hide(); 
}); 

Как добавили вызов, то, что я на самом деле пытаюсь сделать, это написать скрытый сценарий, который calulates диапазона дат, а затем удаляет строки таблицы, содержащие даты, не попадающие в этот диапазон.

Заранее спасибо.

Джон

ответ

1

Отдельные разные строки селекторные запятыми.

$('table tr.red, table tr.yellow').hide() 
+0

Это похоже не работает, поскольку он не использует селектор contains для поиска строки. Как бы вы переписали код, который у меня выше? Разве вместо цветов не были бы атрибутами в вашем примере? – John

+0

Он должен работать одинаково, просто выполните два разных предложения «содержит», разделенные запятой. – GalacticCowboy

0

У вас есть контроль над html на вашей странице?

Если да, рассмотрите возможность добавления класса «дата» (или «цвет») к соответствующему элементу td каждой строки. Затем - вместо использования: содержит - который, скорее всего, будет страдать от проблем с совместимостью между браузерами, перебирает строки таблицы, обращаясь к $('tr td.date').val() и выполняя все те тесты, которые вам нужны.

Кроме того, я бы предложил использовать date.js (http://www.datejs.com/), чтобы упростить обработку даты.

var datestart = Date(); 
var dateend = Date(); 

$('div#WebPartWPQ5 table.ms-summarycustombody tr td.date').each(function(){ 
    var date = Date.parse($(this).val()); 
    if (date.between(datestart, dateend === true)) { 
     $(this).parent().hide(); //your logic here 
    } 
}); 

И еще один пример, который использует метод .filter() (см http://docs.jquery.com/Traversing/filter#fn).

var datestart = Date(); 
var dateend = Date(); 

$('div#WebPartWPQ5 table.ms-summarycustombody tr').filter(function(){ 
    var date = Date.parse($('td.date', this).val()); 
    return date.between(datestart, dateend) === true; 
}).hide(); //your logic here 
Смежные вопросы