【问题标题】:How to prevent function to do something if it reaches its "if" statement?如果函数达到其“if”语句,如何防止函数执行某些操作?
【发布时间】:2015-12-14 00:57:36
【问题描述】:

我正在使用 flex 来执行一些操作。所以这是目标: 当元素“三分之一”(它以 pxl 宽度的文本突出显示)达到 300px 的宽度时,它必须添加类,以便元素获得 100% 的元素宽度。但是当它获得全宽时,函数会重新计算其宽度值并且元素开始闪烁。查看代码 sn-p 以了解问题。

function check() {
  var width = $('.one-third').outerWidth();

  if (width < 300) {
    $('.one-third').parent().addClass('to-column')

  } else {
    $('.one-third').parent().removeClass('to-column')

  }
  $('.one-third').text(width)
}

$(document).ready(function() {
  check()
});
$(window).resize(function() {
  check()
});
body {
  background: #C38D94;
  font-family: 'Arvo', serif;
}


.fbox {
  display: flex;
  flex-flow: row wrap;
  }
.one-half:after, .one-third:after, .one-four:after, .one-five:after, .one-six:after {
  position: absolute;
  top: 0;
  right: 0;
}
.one-half:after {
  content: '2';
}
.one-third:after {
  content: '3';
}
.one-four:after {
  content: '4';
}
.one-five:after {
  content: '5';
}
.one-six:after {
  content: '6';
}
.one-half, .one-third, .one-four, .one-five, .one-six{
  position: relative;
  padding: 30px;
  background: #565676;
  margin: 1px;
  text-align: center;
  color: #fff;
  box-sizing: border-box;
  
}
.one-half {
  flex: 1 calc(50% - 4px); 
  min-width: 300px;
  }

.one-third {
  flex: 1 calc(30% - 4px);
  
}
.one-four {
  flex: 1 calc(25% - 4px);
  
}
.one-five {
  flex: 1 calc(20% - 4px);
  
}

.one-six {
  flex: 1 calc(15% - 4px);
  
}
.one-third-full {
flex: 1 100%;
}

.to-column {
  flex-flow: column
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="fbox dns">   
  <div class="one-third exmpl"></div>
  <div class="one-third exmpl"></div>
  <div class="one-third exmpl"></div> 
</div> 


<div class="fbox"> 
  <div class="one-half"></div>
  <div class="one-half"></div>
</div>
  
 <div class="fbox">  
  <div class="one-third"></div>
  <div class="one-third"></div>
  <div class="one-third"></div> 
</div> 
   
<div class="fbox"> 
<div class="one-four"></div>
  <div class="one-four"></div>
  <div class="one-four"></div>
  <div class="one-four"></div>
</div>
  
  <div class="fbox"> 
  
  <div class="one-five"></div>
  <div class="one-five"></div>
  <div class="one-five"></div>
  <div class="one-five"></div>
  <div class="one-five"></div>
</div>

<div class="fbox"> 
  <div class="one-half"></div>
  <div class="one-five"></div>
  <div class="one-third"></div>
</div>
  
  <div class="fbox"> 
  <div class="one-four"></div>
  <div class="one-third"></div>
  <div class="one-half"></div>
</div>

<div class="fbox"> 
<div class="one-four"></div>
  <div class="one-four"></div>
  <div class="one-four"></div>
  <div class="one-four"></div>
</div>

<div class="fbox">
  <div class="one-six"></div>
  <div class="one-six"></div>
  <div class="one-six"></div>
  <div class="one-six"></div>
  <div class="one-six"></div>
  <div class="one-six"></div>
</div>
</div>


<div class="truth"></div>

那么问题怎么解决呢? 也编码here.

【问题讨论】:

  • if ( width &lt; 300 &amp;&amp; !$('.one-third').parent().hasClass('to-column')) {
  • 对我没有帮助。

标签: jquery html css flexbox


【解决方案1】:

更改您的if 语句,如下所示。

if (width < 300 && !$('.one-third').parent().addClass('to-column').hasClass('to-column')) {
   $('.one-third').parent().addClass('to-column')
}

小提琴链接:http://jsfiddle.net/azim101/8xkf8ntg/

希望这会对你有所帮助。

【讨论】:

  • 不,这不是我要找的。我需要功能:如果元素的宽度小于 300px,则添加类“to-column”。但问题是,由于宽度变得超过 300 像素,因此后声明变为错误。我正在尝试获得正确的逻辑来构建自适应结构以使用 flexbox 和脚本。
猜你喜欢
  • 1970-01-01
  • 2020-08-07
  • 1970-01-01
  • 1970-01-01
  • 2022-11-17
  • 1970-01-01
  • 2021-05-16
  • 2019-06-23
  • 1970-01-01
相关资源
最近更新 更多