如何使用jQuery在div中找到相同的文本?

Lin*_*ina 3 jquery

我有html:

<div class="items-list-container">
   <div class="fieldset-item">Something</div>
   <div class="fieldset-item">Something 2</div>
   <div class="fieldset-item">Something 3</div>
   <div class="fieldset-item">Something 4</div>
   <div class="fieldset-item">Something 5</div>
</div>
Run Code Online (Sandbox Code Playgroud)

我需要找出jQuery,如果变量t与text in相等,fieldset-item如果是 - 将fieldet-itemclass css 设置为:display: block.例如,如果

t = "Something 2"
Run Code Online (Sandbox Code Playgroud)

HTML应如下所示:

   <div style="display: block;" class="items-list-container">
       <div class="fieldset-item">Something</div>
       <div style="display: block;" class="fieldset-item">Something 2</div>
       <div class="fieldset-item">Something 3</div>
       <div class="fieldset-item">Something 4</div>
    </div>
Run Code Online (Sandbox Code Playgroud)

我可以在div中找到所有文本:

var text = $(".items-list-container").text();
Run Code Online (Sandbox Code Playgroud)

我应该如何将css添加到特定的匹配div?

the*_*dox 11

$('.items-list-container .fieldset-item:contains("'+ t +'")').css('display', 'block');
Run Code Online (Sandbox Code Playgroud)

DEMO

关于上面的代码,请参阅@fudgey评论.

更精确地

$('.items-list-container .fieldset-item').filter(function() {
    return $(this).text().trim() == t;
}).css('display', 'block');
Run Code Online (Sandbox Code Playgroud)

DEMO

相关参考:

  • +1; 但是我不会使用`contains()`因为搜索`Something 2`会匹配`Something 22` (3认同)

Mot*_*tie 5

我有一些jQuery :contains()选择器的扩展可能很有用(原始要点)

/* jQuery selector to match exact text inside an element
 *  http://wowmotty.blogspot.com/2010/05/jquery-selectors-adding-contains-exact.html
 *  :containsExact()     - case insensitive
 *  :containsExactCase() - case sensitive
 *  :containsRegex()     - set by user ( use: $(el).find(':containsRegex("/(red|blue|yellow)/gi")') )
 */
$.extend( $.expr[":"], {
    containsExact: $.expr.createPseudo ?
        $.expr.createPseudo(function(text) {
            return function(elem) {
                return $.trim(elem.innerHTML.toLowerCase()) === text.toLowerCase();
            };
        }) :
        // support: jQuery <1.8
        function(elem, i, match) {
            return $.trim(elem.innerHTML.toLowerCase()) === match[3].toLowerCase();
        },

    containsExactCase: $.expr.createPseudo ?
        $.expr.createPseudo(function(text) {
            return function(elem) {
                return $.trim(elem.innerHTML) === text;
            };
        }) :
        // support: jQuery <1.8
        function(elem, i, match) {
            return $.trim(elem.innerHTML) === match[3];
        },

    containsRegex: $.expr.createPseudo ?
        $.expr.createPseudo(function(text) {
            var reg = /^\/((?:\\\/|[^\/])+)\/([mig]{0,3})$/.exec(text);
            return function(elem) {
                return reg ? RegExp(reg[1], reg[2]).test($.trim(elem.innerHTML)) : false;
            };
        }) :
        // support: jQuery <1.8
        function(elem, i, match) {
            var reg = /^\/((?:\\\/|[^\/])+)\/([mig]{0,3})$/.exec(match[3]);
            return reg ? RegExp(reg[1], reg[2]).test($.trim(elem.innerHTML)) : false;
        }

});
Run Code Online (Sandbox Code Playgroud)

所以使用上面的代码,你可以这样做:

$('div:containsExact("Something 2")').show();
Run Code Online (Sandbox Code Playgroud)

或者用于区分大小写的搜索:

$('div:containsExactCase("Something 2")').show();
Run Code Online (Sandbox Code Playgroud)

最后一个扩展使用正则表达式,这很有用但可能不在你的情况下:)