javascript - jQuery 仅在具有另一个具有特定类的 div 的 div 中运行函数

标签 javascript jquery

有代码例如:

<div class="row">

<div class="sblock4">
<h4>Product 1</h4>
  <div class="available">product available</div>
  <div class="quckorder-btn">Quick order</div>
</div>

<div class="sblock4">
<h4>Product 2</h4>
  <div class="available">product available</div>
  <div class="quckorder-btn">Quick order</div>
</div>

<div class="sblock4">
<h4>Product 3</h4>
  <div class="not_available">out of stock</div>
  <div class="quckorder-btn">Quick order</div>
</div>

</div>

如果父div有类为“not_available”的内部div,需要隐藏“快速订购”按钮

尝试了一些 JavaScript:

<script type="text/javascript">
  jQuery(document).ready(function(){
    if(jQuery('div').hasClass('not_available')){
      jQuery('.quckorder-btn').css('display', 'none');
    }
  });  
</script> 

另一个 JavaScript 示例:

<script type="text/javascript">
  jQuery(document).ready(function(){
if (jQuery('.sblock4:contains("out of stock")')) {
    jQuery(".quckorder-btn").addClass("hide-button");
}
  });  
</script>  

但是它或者根本不起作用,或者对所有具有 .quckorder-btn 类的 div 都起作用。 仅需要在具有另一个类为“not_available”的 div 的 div 中运行函数

感谢任何帮助。谢谢

最佳答案

要实现您的目标,您可以使用 :has() 方法。此外,您需要从 :has() 返回的元素中使用 find() ,以便该类仅添加到其子级,而不是所有 .quckorder -btn 元素。试试这个:

jQuery($ => {
  $('.sblock4:has(.not_available)').find('.quckorder-btn').addClass("hide-button");
});
.hide-button {
  display: none;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="row">
  <div class="sblock4">
    <h4>Product 1</h4>
    <div class="available">product available</div>
    <div class="quckorder-btn">Quick order</div>
  </div>
  <div class="sblock4">
    <h4>Product 2</h4>
    <div class="available">product available</div>
    <div class="quckorder-btn">Quick order</div>
  </div>
  <div class="sblock4">
    <h4>Product 3</h4>
    <div class="not_available">out of stock</div>
    <div class="quckorder-btn">Quick order</div>
  </div>
</div>

顺便说一句,我建议,对于像在缺货库存上隐藏“订单”按钮这样对业务至关重要的事情,最好在服务器端进行。尤其是因为它更安全,避免了用户禁用 JS 并因此仍然看到按钮的问题,而且还因为它避免了 FOUC当 DOM 加载时。

关于javascript - jQuery 仅在具有另一个具有特定类的 div 的 div 中运行函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66584874/

相关文章:

Javascript 模糊,密码输入不起作用

javascript - 在 jQuery 弹出式 div 中显示图像

javascript - 无法使用 NodeJS 中的 Pino 记录器将日志写入文件

javascript - 灯箱问题,点击事件不起作用

javascript - 如何将计算状态添加到 React Apollo 中的图形对象?

javascript - 选项标签未出现在选择 Javascript 中

jquery - 为一个 div 元素重置多个 css 样式

javascript - 将类添加到父元素

jquery - Z-indexing 和 Css Floats 可以在砌体中使用吗?

javascript - 单击图标两次不关闭下拉菜单