Javascript 如何从两个jquery:contains()选择器实例中获取total实例

Javascript 如何从两个jquery:contains()选择器实例中获取total实例,javascript,jquery,jquery-selectors,contains,Javascript,Jquery,Jquery Selectors,Contains,我需要关于如何从2个jquery:contains()选择器实例获取total实例的帮助。对于一些多个需求,我需要获得两个变量实例,并在不重复的情况下显示总体结果 为了进一步解释,以下是细节- html div块- <div id="results"></div> <div class="container"> <div class="keywords" style="display:none">Global, City1</div>

我需要关于如何从2个jquery:contains()选择器实例获取total实例的帮助。对于一些多个需求,我需要获得两个变量实例,并在不重复的情况下显示总体结果

为了进一步解释,以下是细节-

html div块-

<div id="results"></div>

<div class="container">
<div class="keywords" style="display:none">Global, City1</div>
<div class="display" style="display:none">Results one for Global City1</div>
</div>

<div class="container">
<div class="keywords" style="display:none">Global, City2</div>
<div class="display" style="display:none">Results one for Global City2</div>
</div>

<div class="container">
<div class="keywords" style="display:none">Global, City3</div>
<div class="display" style="display:none">Results one for Global City3</div>
</div>

<div class="container">
<div class="keywords" style="display:none">Global, City4</div>
<div class="display" style="display:none">Results one for Global City4</div>
</div>

<div class="container">
<div class="keywords" style="display:none">Main1, City1</div>
<div class="display" style="display:none">Results one for Main1 City1</div>
</div>

<div class="container">
<div class="keywords" style="display:none">Main2, City2</div>
<div class="display" style="display:none">Results one for Main2 City2</div>
</div>

全球,城市1
全球城市1的结果1
全球城市2
全球城市2的结果1
全球城市3
全球城市3的结果1
全球城市4
全球城市4的结果1
Main1,城市1
结果1主要城市1
缅因州2号,城市2
结果1主要城市2
我的javascript-

    var keyword= "Global";
var keyword2= "Main";

$('.container').has('.keywords:contains('+keyword+')').children(".display").show();

var text = "";
var i = 0;

while (i < keyword.length) {
        text += ":contains('"+keyword[i]+"')";
        i++;
    }

// keyword 2
$('.container').has('.keywords:contains('+keyword2+')').children(".display").show();

var text2 = "";
var x = 0;

while (x < keyword2.length) {
        text2 += ":contains('"+keyword2[i]+"')";
        x++;
    }

var results1 = $("div[class^=keywords]"+text+"").length;
var results2 = $("div[class^=keywords2]"+text2+"").length;
var results = results1 + results2;

$("#results").append(results);
var关键字=“全局”;
var关键字2=“Main”;
$('.container').has('.keywords:包含('+keyword+'))。子项(“.display”).show();
var text=“”;
var i=0;
while(i
我的测试用例-

  • 如果var关键字==“全局”和var关键字2=“全局”;然后是4个结果,因为Global和Global有4个匹配的实例。-嗯
  • 如果var关键字==“全局”和var关键字2=“主”;然后它仍然显示4个结果,但应该是6个结果,因为有6个匹配的实例。-不对
  • 这是我的提琴供参考-

    如何更正代码以显示测试用例2的6个结果


    提前谢谢。

    问题在于while循环在
    关键字上迭代-不是您想要的关键字数组:
    您可以这样做:

    var keyword= "Global";
    
    while (i < keyword.length) {
            text += ":contains('"+keyword[i]+"')";
            i++;
    }
    
    试一试

    功能键过滤器(键){
    变量$els=$('.container.keywords'),
    $result=$();
    $。每个(键,功能(i,键){
    $result=$result.add($els.filter(':contains('+key+')));
    });
    返回$result;
    }
    功能测试(按键){
    $('#results').append('Keys:'+Keys.join(',')+':'+keyFilters(Keys.length++'))
    }
    测试(['Global','Global']);
    测试(['Main','Global'])
    
    
    全球,城市1
    全球城市1的结果1
    全球城市2
    全球城市2的结果1
    全球城市3
    全球城市3的结果1
    全球城市4
    全球城市4的结果1
    Main1,城市1
    结果1主要城市1
    缅因州2号,城市2
    结果1主要城市2
    
    Ok。因为答案不起作用。我会删除代码。谢谢
        text += "div[class^=keywords]:contains('" + keywordArray[i] + "')"
        //  text += ":contains('"+keywordArray[i]+"')";
        i++;
    }
    console.log(text);
    var results = $(text).length;