2009-10-22 50 views
1

我是新來的JQuery,也許我錯過了顯而易見的,但我怎麼可以使用包含選擇器篩選表,但它使用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

這似乎不工作,因爲它不利用包含選擇器來查找字符串。你將如何重寫我上面的代碼?你的例子中的顏色不是屬性嗎? – John 2009-10-22 19:15:26

+0

它應該工作相同,只是做兩個不同的「包含」子句,用逗號分隔。 – GalacticCowboy 2009-10-25 01:47:06

0

您是否可以控制頁面中的html?

如果是這樣,請考慮在每行的相應td元素中添加一個類「date」(或「color」)。然後 - 而不是使用:contains - 這很可能會遇到跨瀏覽器兼容性問題,遍歷錶行,訪問$('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