javascript - wrap() 多次重复元素 - jQuery

标签 javascript jquery html

我有一个非常基本的功能,每当浏览器窗口变得大于 x 像素量时,我就可以将一个 div 标签包装在另一个 div 标签内。

但是,我有一个奇怪的错误,一旦页面大小调整多次就会发生。

首先,我将向您展示我当前正在使用的 jQuery 脚本,以便您可以更好地了解我正在使用的内容。

$(window).on("resize", function(){
    if (window.matchMedia("(min-width: 1920px)").matches) {
        $(".navbar-inner").wrap("<div id='center'></div>");
    } else {
        var content = $("#center").contents();
        $("#center").replaceWith(content);
    }
}).trigger("resize");

基本上,一旦窗口变得大于1919px ,它将强制导航栏包裹在新的 div 标签内。

问题是当页面大小调整多次时,<div id='center'>元素将被重复多次。

因此,dom 中的输出不是这样的:

<div id="center">
    <div class="navbar-inner">
        <!-- e.t.c... !-->
    </div>
</div>

它将是:

<div id="center">
    <div id="center">
        <div id="center">
            <div id="center">
                <!-- this will duplicate over and over until at some point, it displays the navbar-inner div !-->
                <div class="navbar-inner">
                    <!-- e.t.c... !-->
                </div>
            </div>
        </div>
    </div>
</div>

我搜索了几乎所有我能找到的线索、链接、答案,但我就是找不到可以解决我的问题的东西。

我对 JavaScript 还很陌生,因此感谢所有帮助。

干杯。

最佳答案

您需要通过检查元素的计数来检查内部 if 条件是否已包装。您也可以使用 unwrap() 使元素变形。

$(window).on("resize", function() {
  if (window.matchMedia("(min-width: 1920px)").matches) {
    if (!$('#center').length)
      $(".navbar-inner").wrap("<div id='center'></div>");
  } else {
    $("#center .navbar-inner").unwrap();
  }
}).trigger("resize");   

或使用 is() 检查父级是否为 #center 方法。

$(window).on("resize", function() {
  if (window.matchMedia("(min-width: 1920px)").matches) {
    if (!$(".navbar-inner").parent().is("#center"))
      $(".navbar-inner").wrap("<div id='center'></div>");
  } else {
    $("#center .navbar-inner").unwrap();
  }
}).trigger("resize");

关于javascript - wrap() 多次重复元素 - jQuery,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37964119/

相关文章:

jQuery 多选无法通过单击事件删除选项

javascript - 如何重置按钮中的 setTimeout 函数以便它可以再次运行

javascript - 如何获取元素相对于父元素的位置?

javascript - CSS/JS : fixed position though scrolling

c# - ASP.NET 下拉列表导致问题

javascript - 仍然对 jQuery 中的事件和事件处理程序感到困惑

javascript - 从数据库在 DHTMLX Scheduler Timeline View 中添加资源(y_units)

javascript - 使用javascript为jwplayer的HTML元素覆盖设置wmode

javascript - 将字符串从 Java .properties 文件安全地传递到由 JavaScript 处理的字符串

html - 半个像素在 font-size CSS 属性中意味着什么?