【问题标题】:Adding a class to the previous div向前一个 div 添加一个类
【发布时间】:2020-05-11 06:00:53
【问题描述】:

$(document).ready(function(){
		$( ".disable-hover" )
    .parents( "div" )
        .addClass( "disable-hover" );
    });
</script>
<script src="https://static.jsbin.com/js/render/edit.js?4.1.7"></script>
<script>jsbinShowEdit && jsbinShowEdit({"static":"https://static.jsbin.com","root":"https://jsbin.com"});</script>
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
  })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');

ga('create', 'UA-1656750-34', 'auto');
ga('require', 'linkid', 'linkid.js');
ga('require', 'displayfeatures');
ga('send', 'pageview');
.gift-product-item.disable-hover { display: none; }
.owl-item{
  border:1px solid;
  padding:2px;
}
 


</script>
</body>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="owl-item">
  <div>First div.</div>
</div>
  <div class="owl-item">
    <div class="gift-product-item disable-hover">Second</div>
</div>
<div class="owl-item">
  <div>Third</div>
</div>

我希望包含 .disable-hover 类的 div 与前一个 .owl-item 类的 div 一起隐藏。

有这种可能吗?

jsbin.com/suloyir/edit?html,css,js,output

【问题讨论】:

  • 请提供一些描述您尝试过的脚本/html,否则人们将很难回答这个问题。
  • 您的示例中缺少顶部

标签: javascript jquery html css class


【解决方案1】:

如果您想使用纯 JavaScript:

const elements = document.getElementsByClassName("disable-hover")
for (const e of elements) {
    if (e.parentNode.className.split(" ").includes("owl-item")) {
        e.parentNode.style.display = "none"
    }
}

【讨论】:

  • 这个工作:),但是如何使 owl-item 成为最后一个元素?
  • @BartoszXxX 我不太明白你的问题。将 owl-item 作为最后一个元素是什么意思?有什么例子吗?
  • owl-item 上面还有两个 divas。您的脚本也适用于它们。我希望它只适用于 owl-item
  • 我刚刚更新了我的答案。让我知道您是否正在寻找它。
【解决方案2】:

我不确定您是否只想使用 css 或 jQuery 来实现。使用 css,我不知道元素的任何先前兄弟选择器的存在。 如果您想使用 jQuery 隐藏 div.owl-item 之前的 div.owl-item 包含使用 jQuery 的 div.disable-hover 类,您可以执行以下操作:

jQuery( '.disable-hover' ).parent().hide().prev().hide();

这将隐藏两个 div,如果您只想隐藏前一个 div(因为其中一个被 css 隐藏),您可以这样简化:

jQuery( '.disable-hover' ).parent().prev().hide();

希望对你有帮助。

帖子编辑后

我看到您需要在编辑后向前一个 div 添加一个类:

// This will add the .disable-hover class to the previous div
jQuery( '.disable-hover' ).parent().prev().addClass( 'disable-hover' );

// This will add the .disable-hover class to the div contained in the previous div
jQuery( '.disable-hover' ).parent().prev().find( 'div' ).addClass( 'disable-hover' );

【讨论】:

    【解决方案3】:

    我发布这个更改的代码来解释答案

    $(document).ready(function(){
    		$( ".disable-hover" )
        .parents( "div" )
            .addClass( "disable-hover" );
        });
    </script>
    <script src="https://static.jsbin.com/js/render/edit.js?4.1.7"></script>
    <script>jsbinShowEdit && jsbinShowEdit({"static":"https://static.jsbin.com","root":"https://jsbin.com"});</script>
    <script>
    (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
      (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
      m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
      })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
    
    ga('create', 'UA-1656750-34', 'auto');
    ga('require', 'linkid', 'linkid.js');
    ga('require', 'displayfeatures');
    ga('send', 'pageview');
    .gift-product-item.disable-hover,.owl-item.disable-hover { display: none; }
    .owl-item{
      border:1px solid;
      padding:2px;
    }
     
    
    
    </script>
    </body>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <div class="owl-item">
      <div>First div.</div>
    </div>
      <div class="owl-item">
        <div class="gift-product-item disable-hover">Second</div>
    </div>
    <div class="owl-item">
      <div>Third</div>
    </div>

    【讨论】:

    • 希望这是你的期望
    【解决方案4】:

    如下更改 CSS。这会工作

    .gift-product-item.disable-hover,.owl-item.disable-hover { display: none; }
    .owl-item{
      border:1px solid;
      padding:2px;
    }
    

    【讨论】:

    • 在另一个答案中,您可以看到运行脚本的输出。希望您将父 div 提及为以前的 div
    猜你喜欢
    • 2021-11-18
    • 2014-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-15
    • 2011-12-03
    • 2012-02-02
    相关资源
    最近更新 更多