javascript - 如果单击子元素,则不要更改父元素的颜色

标签 javascript jquery css

这是我的 HTML:

.imageURL:active .image_submit_div {
  background-color: #ccc;
  /* has no effect */
}

.image_submit_div:active {
  background-color: #e6e6e6;
}
<div class="image_div">
  <label for="id_image" class="image_submit_div">
        <h3>+ add file</h3>
        <input id="id_imageURL" class="imageURL" type="text" name="imageURL" />
    </label>
  <input id="id_image" type="file" name="image" />
</div>

父 div 是 image_submit_div。当你点击它时,它会改变颜色:

子元素是.imageURL。单击此按钮时,我不希望父 div 更改颜色。当我执行以下代码时,它没有任何效果:

那么如何防止点击子div时父div改变颜色呢?

编辑:这是一个代码片段,可以让您更好地了解:https://codepen.io/kingdezz/pen/WOoPgY

最佳答案

在 CSS 中,您不能根据其子项(或该子项上的事件)来设置父项的样式。你不能做像 child:hover parent { styles } 这样的事情。

CSS 仅适用于从上到下 parent:hover child { styles }

你的问题有点不清楚,但你可以使用 JQ

您可以使用mousedownmouseup 事件来实现您想要的

$(".imageURL")
  .mousedown(function(e) {

    $(this).parent(".image_submit_div").addClass("colored")

  })
  .mouseup(function() {
     $(this).parent(".image_submit_div").removeClass("colored")
  });
.image_submit_div:active {
 background-color:red;
}
.image_submit_div.colored { 
background-color:blue;
}
.image_submit_div { 
display:block;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="image_div">
  <label for="id_image" class="image_submit_div">
    <h3>+ add file</h3>
    <input id="id_imageURL" class="imageURL" type="text" name="imageURL" value="i don't trigger click on parent" />
  </label>
  <input id="id_image" type="file" name="image" />
</div>

关于javascript - 如果单击子元素,则不要更改父元素的颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44586576/

相关文章:

jquery - 改变不透明度和背景时不一致的框阴影

javascript - 如何防止 parentNode 疯狂?

javascript - 在弹出窗口中成功登录 Paypal 后,将重定向 url 参数传回主窗口

php - 从 gridview 数据或 mySQL DB 检索行并在 PopUp 中显示

javascript - 函数内的 if 语句会破坏 javascript

javascript - 带有屏幕调整大小的 HTML 菜单栏

javascript - 在 c3.js 中绘制这些点 xy

javascript - JQuery UI 对话框 - 更改标题颜色仅部分有效

javascript - 使用 Ajax 生成的链接启动 JQuery 对话框

css 类覆盖属性以使用另一个类的值