javascript - jquery 窗口调整大小导致奇怪的克隆问题

标签 javascript jquery css resize

我使用的是最新版本的 jQuery,当我最初加载页面时,容器中显示了正确的 CSS 剧院座位数。如果用户调整窗口的宽度,则只有椅子的扶手会相互重叠显示,页面的宽度会远远超出窗口的宽度;加上页面卡住。

您可以在此处查看 CodePen: https://codepen.io/ryanindustries8/pen/BJrPMd

    $( document ).ready( function() {
        var setSize = function(){
        var blokWidth = $( ".workwithme" ).width();
        var seat = $(".seatBlok").outerWidth();

        var containMe = Math.floor( blokWidth / seat );
        $( "span:first" ).text( containMe );

        var hope = $(".seatBlok");
        for (var i = 1; i < blokWidth; i++){
        hope.clone().insertAfter(hope);
    }}

$( window ).resize(setSize);
    setSize();
})

感谢您提前提出任何建议!

最佳答案

Here is a code pen I made that fixes your immediate issues. 您的代码有很多问题。

我能否建议您也使用浏览器的控制台(例如 Chrome 开发工具)来了解有关 JS 工作原理的更多信息。我已经标记了您的一些代码以表明我的意思。 这是您工作的代码笔叉。这不是理想的解决方案,但比我想象的要好。

您使用的调整大小监听器在短暂的调整大小中触发了 50 多次

resize event在用户调整大小时连续发出。 在我的例子中,setsize() 函数在一两秒内运行了 50 多次。 为了限制运行次数,我使用 lodash _.debounce .本文还有助于解释debounce / throttling .

 $( window ).resize(setSize);
 setSize();

因此,在调用 setsize 的 50 多次中,for 循环每次都运行。

// i increments up to the width of browser (in pixels) 
// my screen is 1920 wide, so this ran many times!
// this resulted in thousands of .seatBlok elements being put into DOM.
for (var i = 1; i < blokWidth; i++){
   hope.clone().insertAfter(hope);
}

关于javascript - jquery 窗口调整大小导致奇怪的克隆问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48333730/

相关文章:

html - 如何仅在换行符上添加边距?

javascript - 未捕获的类型错误 : Object #<error> has no method 'call'

javascript - 怎么不推全阵没有这个产品

jQuery:我可以用 $ ('.superset' ).$ ('.within' ) 代替 $ ('.within' , $ ('.superset' )) 吗?

javascript - bool 逻辑误解

html - 文本覆盖另一个文本,需要显示在下方

javascript - 如何只接受按字母顺序按下的键(用于 "autocomplete"目的)

javascript - move_uploaded_file - 图像的文件名?

jquery - 如何在 li 标签内使用 jQuery 使 div 可点击

html - Bootstrap 不右对齐我的 DIV - 向右拉不工作