.wrap()与resize函数一起使用时多次添加选择器

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了.wrap()与resize函数一起使用时多次添加选择器相关的知识,希望对你有一定的参考价值。

当浏览器宽度小于div或高度大于宽度时,我正在使用resize函数将801px与容器包装在一起。我的问题是,当其中任何一个变为真时,div将被选择器包裹8次。我究竟做错了什么?

这是我的代码:

$(document).ready(function(){
 function wrapperWidth() {
  var wrapper_width = $('body').width();
   if (wrapper_width < 801 || window.innerHeight > window.innerWidth) {
      $('.video-profile').wrap("<div></div>");
   }
 }
 wrapperWidth();
 $(window).resize(function() {
wrapperWidth();
 });
});

当浏览器宽度小于801px时,我得到了这个。

<div>
 <div>
  <div>
   <div>
    <div>
     <div>
      <div>
       <div>
        <div class="video-profile"></div>
       </div>
      </div>
     </div>
    </div>
   </div>
  </div>
 </div>
</div>
答案

浏览器可以在调整大小操作期间多次触发调整大小事件,有关详细信息,请参阅此question

我建议检查容器的存在以避免重复:

if (wrapper_width < 801 || window.innerHeight > window.innerWidth) {
    if (!$('.video-profile').parent().hasClass('vp-container')) {
        $('.video-profile').wrap("<div class="vp-container"></div>");
    }
}

以上是关于.wrap()与resize函数一起使用时多次添加选择器的主要内容,如果未能解决你的问题,请参考以下文章

wrap_content 如何与编辑文本视图一起使用?

解决Javascript中$(window).resize()多次执行

如何让 `page-break-inside: Avoid` 与 `flex-wrap: wrap` 一起工作

jQuery事件

#JS 窗口resize避免触发多次

如何将 pre-wrap 与 swing HTML 文本一起使用?