【问题标题】:JQuery Contains Selector - Multiple Text ItemsJQuery 包含选择器 - 多个文本项
【发布时间】:2010-12-09 04:25:52
【问题描述】:

我是 JQuery 的新手,可能缺少显而易见的东西,但是我如何使用 contains 选择器过滤表,但让它使用 OR 运算符查找多个字符串。换句话说,我希望隐藏包含“Red”或“Yellow”的行。

到目前为止,我通过隐藏除给定日期之外的所有行来工作:

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

作为额外的挑战,我真正想做的是编写一个隐藏脚本来计算日期范围,然后删除包含不属于该范围的日期的表格行。

提前谢谢你。

约翰

【问题讨论】:

    标签: jquery variables selector contains


    【解决方案1】:

    用逗号分隔不同的选择器字符串。

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

    【讨论】:

    • 这似乎不起作用,因为它没有利用包含选择器来查找字符串。你将如何重写我上面的代码?在您的示例中,颜色不是属性吗?
    • 应该是一样的,只是做两个不同的“contains”子句,用逗号隔开。
    【解决方案2】:

    您可以控制页面中的 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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-02-16
      • 2014-07-22
      • 2011-02-08
      • 2018-01-05
      • 2021-10-27
      • 2013-12-02
      • 1970-01-01
      • 2011-10-17
      相关资源
      最近更新 更多