在jquery中使用filter / contains

时间:2014-06-30 15:42:33

标签: jquery contains

想知道是否有人可以提供帮助;

我试图在jquery中使用过滤器。

基本上我试图弄清楚一些代码几乎可以做它需要做的事情。

if ($(".regionSubHeader span:contains('19-07-2014')").length > 0){

if($('.regionFilterLnk span:contains("Nights - 2")').length > 0 || $('.regionFilterLnk span:contains("Nights - 3")').length > 0 || $('.regionFilterLnk span:contains("Nights - 4")').length > 0 || $('.regionFilterLnk span:contains("Nights - 5")').length > 0){
$( '#thirtydaysmessage' ).show();
}
else{
$( '#thirtydaysmessage' ).hide();
}

问题是,如果Nights - 21在跨度中它在逻辑中将其注册为正数 - 我猜测这是因为它使用了包含。

我一直在阅读这个问题,而且解决方案似乎是使用过滤器,但是我无法理解如何以这种方式执行一堆语句,例如像这样的事情;

$(".regionSubHeader span").filter(function() {
return $(this).text() === "Start date - 19-07-2014";
 }).css("font-size", "60px");

但不是.css我需要进行如上所述的进一步检查(夜间检查次数),也许是一个功能?

关于如何使用过滤器结果执行一堆语句的任何指针?

由于

1 个答案:

答案 0 :(得分:0)

您可以创建一个泛型函数,它将选择器和匹配模式作为参数并返回可能的匹配项:

var getElemsContaining = function ( elem, pattern ) {
    var matches = [];
    $( elem ).each(function ( i, el ) {
        var re = new RegExp( pattern, 'ig' );
        if ( el.text().match( re )) {
            links.push( el );
        }
    });
    return links;
}

if( getElemsContaining( '.regionSubHeader span', '19-07-2014' ) && getElemsContaining( '.regionFilterLnk span', 'Nights - 2|Nights - 3|Nights - 4' ) ){
    // Do lots of stuff here
}