Javascript 仅当子项包含特定字符串时才显示父项

Javascript 仅当子项包含特定字符串时才显示父项,javascript,jquery,Javascript,Jquery,我有一组出现在多个页面上的div,它们具有以下模式: <div class=“entry”> <div id=“post”> <div class=“text”> <div class=“service”></div> <div class=“timeline”> <div class=“entry-title”> #hashtagOne

我有一组出现在多个页面上的div,它们具有以下模式:

<div class=“entry”>
  <div id=“post”>
    <div class=“text”>
      <div class=“service”></div>
      <div class=“timeline”>
        <div class=“entry-title”>
          #hashtagOne
        </div>
      </div>
    </div>
  </div>
</div>

<div class=“entry”>
  <div id=“post”>
    <div class=“text”>
      <div class=“service”></div>
      <div class=“timeline”>
        <div class=“entry-title”>
          #hashtagTwo
        </div>
      </div>
    </div>
  </div>
</div>

<div class=“entry”>
  <div id=“post”>
    <div class=“text”>
      <div class=“service”></div>
      <div class=“timeline”>
        <div class=“entry-title”>
          #hashtagThree
        </div>
      </div>
    </div>
  </div>
</div>

#哈希塔根
#哈希表二
#哈希值三
此组显示在多个页面上

我理想的javascript/jquery解决方案如下:

$('.entry-title').each(function(i,v){
if ($(this).text().trim().charAt(0) =="#") {
  $(this).closest('.entry').show();
}
});
  • 显示:所有div class=“entry”上无
  • 如果子div class=“entry title”包含#内容,请将父div class=“entry”更改为显示:block

  • 因此,在第一页上,我可以插入这段代码,只显示hashtagOne,在第二页上,只显示hashtagTwo等等。

    非常简单,只需在页面加载或任何您希望显示的事件中同时使用:contains()和.closest()

    由于您希望基于不同的页面进行显示,我建议使用页面标题并将其设置为title=“page One”和title=“page Two”等,然后在文档就绪状态下对其进行比较,并相应地显示所需的div

    jQuery(document).ready(function(){
    
      jQuery('div.entry').hide();
       if(jQuery(document).find("title").text() == 'Page One')
       {
           jQuery( "div.entry-title:contains('#something')" ).closest('.entry').show();
        }
        else if(jQuery(document).find("title").text() == 'Page Two')
        {
           jQuery( "div.entry-title:contains('#something Else')" ).closest('.entry').show();
        }
    
    });
    

    试着这样做:

    $('.entry-title').each(function(i,v){
    if ($(this).text().trim().charAt(0) =="#") {
      $(this).closest('.entry').show();
    }
    });
    

    这很好:

    $(document).ready(function(){
        $(".entry").each(function(){
            if($(this).find(".entry-title:contains('#something')").length > 0){
                $(this).css("display","block");
            } 
        });
    });
    

    这是正在运行的

    检查这个演示,如果这是你想要的,那么这些引用是什么(lol:))嘿@guradio没有小提琴附在上面。谢谢你的帮助!可能是这样:@guradio,我想没有现成的(简短的)方法……你的小提琴看起来不错。。