简体   繁体   English

如何在li> div中查找特定字符串并将其隐藏

[英]How can I find specific string in li>div and hide it

I have a ul list which has li's and in li there is div with no class and id. 我有一个带有li的ul列表,并且在li中有没有类和id的div。 I just want to find li>div which has text saying 'Certificats et forfaits' and hide anchor tag which is next to it. 我只想找到li> div,其文字为“ Certificats et forfaits”,并隐藏其旁边的锚标签。 Is it possible? 可能吗?

Here is my code 这是我的代码

<ul class="select2-choices">  
    <li class="select2-search-choice">    
        <div>Informatique Électronique</div>    
        <a href="#" class="select2-search-choice-close" tabindex="-1"></a>
    </li>
    <li class="select2-search-choice">   
        <div>Informatique Électronique &gt; Accessoires Informatique</div>
        <a href="#" class="select2-search-choice-close" tabindex="-1"></a>
    </li>
    <li class="select2-search-choice">    
        <div>Mode et Accessoires</div>    
        <a href="#" class="select2-search-choice-close" tabindex="-1"></a>
    </li>
    <li class="select2-search-choice">    
        <div>Certificats et forfaits</div>    
        <a href="#" class="select2-search-choice-close" tabindex="-1"></a>
    </li>
    <li class="select2-search-field">    
        <label for="s2id_autogen3" class="select2-offscreen"></label>    
        <input type="text" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" class="select2-input" id="s2id_autogen3" placeholder="" style="width: 20px;">  
    </li>
</ul>

In my above list I want to find text Certificats et forfaits which is in div always and it will be always after li, once I find that I need to hide anchor tag next to it. 在我上面的列表中,我想找到始终在div中的文本Certificats et forfaits,一旦发现需要在其旁边隐藏定位标记,它将始终在li之后。 How can I achieve this any help? 我该如何获得帮助?

Please check below snippet. 请检查以下片段。

 $( document ).ready(function() { $('ul li').each(function(){ if($(this).children('div').text() == 'Certificats et forfaits'){ $(this).children('a').hide(); } }); }); 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <ul class="select2-choices"> <li class="select2-search-choice"> <div>Informatique Électronique</div> <a href="#" class="select2-search-choice-close" tabindex="-1"></a> </li> <li class="select2-search-choice"> <div>Informatique Électronique &gt; Accessoires Informatique</div> <a href="#" class="select2-search-choice-close" tabindex="-1"></a> </li> <li class="select2-search-choice"> <div>Mode et Accessoires</div> <a href="#" class="select2-search-choice-close" tabindex="-1"></a> </li> <li class="select2-search-choice"> <div>Certificats et forfaits</div> <a href="#" class="select2-search-choice-close" tabindex="-1"></a> </li> <li class="select2-search-field"> <label for="s2id_autogen3" class="select2-offscreen"></label> <input type="text" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" class="select2-input" id="s2id_autogen3" placeholder="" style="width: 20px;"> </li> </ul> 

Try this: use .filter() to get required div and then hide next anchor 试试看:使用.filter()获取所需的div,然后隐藏下一个锚点

 $(function(){ $('ul li>div').filter(function(){ return $(this).text() == 'Certificats et forfaits'; }).next().hide(); }); 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <ul class="select2-choices"> <li class="select2-search-choice"> <div>Informatique Électronique</div> <a href="#" class="select2-search-choice-close" tabindex="-1">Informatique Électronique</a> </li> <li class="select2-search-choice"> <div>Informatique Électronique &gt; Accessoires Informatique</div> <a href="#" class="select2-search-choice-close" tabindex="-1">Informatique Électronique &gt; Accessoires Informatique</a> </li> <li class="select2-search-choice"> <div>Mode et Accessoires</div> <a href="#" class="select2-search-choice-close" tabindex="-1">Mode et Accessoires</a> </li> <li class="select2-search-choice"> <div>Certificats et forfaits</div> <a href="#" class="select2-search-choice-close" tabindex="-1">Certificats et forfaits</a> </li> <li class="select2-search-field"> <label for="s2id_autogen3" class="select2-offscreen"></label> <input type="text" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" class="select2-input" id="s2id_autogen3" placeholder="" style="width: 20px;"> </li> </ul> 

EDIT - To hide specific anchor tag, can find the anchor inside parent li like below 编辑 -要隐藏特定的锚标签,可以在父li中找到锚,如下所示

$(function(){
       $('ul li>div').filter(function(){
          return $(this).text() == 'Certificats et forfaits';
        }).parent().find('a.select2-search-choice-close').hide();
    });

Use Contains selector 使用包含选择器

 $( "ul li>div:contains('Certificats et forfaits')" ).hide();

To hide its anchor 隐藏其锚点

$( "ul li>div:contains('Certificats et forfaits')" ).siblings("a").hide();

Working Demo 工作演示

can do it with .each() with jquery 可以用.each()jquery

$("li").each(function(){
    if($(this).find("div").html() == "Certificats et forfaits"){
       $(this).next().hide();
    }
});

fiddle example 小提琴的例子

If you know which number in the list needs to be hidden then you can use the :nth-child(#) selector. 如果您知道列表中的哪个数字需要隐藏,则可以使用:nth-child(#)选择器。 Here is how you would hide the anchor tag based on the code your provided: 以下是根据您提供的代码隐藏锚标记的方法:

.select2-search-choice:nth-child(4) a {
  display: none;
  }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM