javascript - onclick 属性不适用于 flexbox

标签 javascript jquery html css flexbox

所以我正在尝试使用 flexbox 创建一个简单的侧边导航... 单击蓝色 div 时,我希望红色 div 的宽度“flex”从 0 变为 1,即“50%”...... 我的代码在下面,但我还将包括一个代码笔...

HTML

<div class="container flex">
<div class="blue" onclick="clickBlue();"></div>
<div class="red"></div>
</div>

CSS

.container{background:rgba(0,0,0,.1); width:100%; height:100px;}
.blue{background:rgba(0,0,250,.2); flex:1; height:100px;}
.red{background:rgba(250,0,0,.4); flex:1; height:100px;}
.flex{display:flex; justify-content:center; align-items:center;}

JS

$(document).ready(function(){
function clickBlue(){ 
$(".red").css("flex","1");
}
});

http://codepen.io/gebrutommy/pen/bwEGBv

最佳答案

问题是您在就绪回调中定义了 clickBlue,因此它的作用域不是全局的,所以您不能从全局作用域中引用它。要解决此问题,请在全局范围内定义 clickBlue。没有 document.ready 功能。

function clickBlue() {
  $(".red").css("flex", "1");
}
.container {
  background: rgba(0, 0, 0, .1);
  width: 100%;
  height: 100px;
}
.blue {
  background: rgba(0, 0, 250, .2);
  flex: 1;
  height: 100px;
}
.red {
  background: rgba(250, 0, 0, .4);
  flex: 0;
  height: 100px;
}
.flex {
  display: flex;
  justify-content: center;
  align-items: center;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="container flex">
  <div class="blue" onclick="clickBlue();"></div>
  <div class="red"></div>
</div>

附言这解决了您的问题,但如果您保留 document.ready 回调并在内部的 .blue 选择器上添加点击监听器,而不使用 html 钩子(Hook),效果会更好。

$('.blue').on('click', clickBlue);

关于javascript - onclick 属性不适用于 flexbox,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39453600/

相关文章:

javascript - 绑定(bind)多个参数的回调函数

javascript - 响应 header 为空

javascript - 如何设置堆积栏中的一列样式?

javascript - JQuery 不处理/从动态内容中选择

php - 如何使用 AJAX 获取数据并将其存储在 javascript 变量中?

html - Bootstrap : How to prevent sidebar and main div from collapsing when resizing page?

javascript - 为什么我的复选框会禁用其他值?

javascript - 根据条件打开日期选择器

javascript - 无法在函数内的警报中使用变量

html - Bootstrap Fieldset Legend 完全被 Panel Panel-default 覆盖