我是JQuery的新手并且可能错过了显而易见的,但我如何使用包含选择器过滤表,但是让它使用OR运算符查找多个字符串。换句话说,我希望隐藏包含“红色”或“黄色”的行。
到目前为止,我通过隐藏除给定日期之外的所有行来实现此目的:
$(function()
{
$('div#WebPartWPQ5 table.ms-summarycustombody tr:not(:contains("10/27/2009"))')
.hide();
});
作为额外的挑战,我真正想要做的是编写一个隐藏的脚本来计算日期范围,然后删除包含不属于该范围的日期的表行。
提前谢谢。
约翰
答案 0 :(得分:1)
用逗号分隔不同的选择器字符串。
$('table tr.red, table tr.yellow').hide()
答案 1 :(得分:0)
您是否可以控制页面中的html?
如果是这样,请考虑将“日期”(或“颜色”)类添加到每行的相应td元素中。然后 - 而不是使用: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