javascript - 如何用 jquery 包装元素,但只包装一次

标签 javascript jquery html css

var carouselitems = $("#bestselling .carousel-inner .product");
for(var i = 0; i < carouselitems.length; i+=count) {
  carouselitems.slice(i, i+count).wrapAll("<div class='item'></div>");
}
$('#bestselling .carousel-inner .item').first().addClass('active');

我需要脚本的这一部分将每个 count 元素包装在 .item div 中,但是因为我正在为我的网站使用断点(响应式) ,我必须根据断点重置 count 数字,例如:setCarouselSlides(3);

如果我这样做,每次我的 div 被包裹时,它们都会被包裹在 +1 层 .item div 中,所以如果一开始它是

<div class="item">
  <div class="product"></div>
  <div class="product"></div>
  <div class="product"></div>
  <div class="product"></div>
</div>

然后在断点之后是

<div class="item">
  <div class="item">
    <div class="product"></div>
    <div class="product"></div>
    <div class="product"></div>
  </div>
</div>

当我启动 setCarouselSlides(); 函数时,如何强制它添加 .item 包装一次?

最佳答案

你可以调用一个unwrap

function setCarouselSlides(count){
    $("#bestselling .carousel-inner .item .product").unwrap()
    var carouselitems = $("#bestselling .carousel-inner .product").unwrap();
    for (var i = 0; i < carouselitems.length; i += count) {
        carouselitems.slice(i, i + count).wrapAll("<div class='item'></div>");
    }
    $('#bestselling .carousel-inner .item').first().addClass('active');
}

关于javascript - 如何用 jquery 包装元素,但只包装一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29031981/

相关文章:

javascript - 从 underscore.js 的模板中删除 html 元素

javascript - 如何在 Mirth Connect JavaScript 阅读器源连接器中获取 channel 信息?

jquery - 如何在一组元素周围显示 Angular 边框?

html - 当图像水平居中时,margin-top 不起作用 - Phonegap

javascript - 在我的 slider 下方添加导航按钮

javascript - 如何隐藏没有背景的模式弹出窗口?

jQuery 对话框内的 javascript setInterval() 在销毁或删除时不会停止

php - 如何更改三个不同 div-s 的正文背景

javascript - 如何判断什么是直接操作 DOM 中的样式

javascript - Internet Explorer 不遵守最大宽度或最大高度