【发布时间】:2014-09-08 12:38:24
【问题描述】:
我有三个不同的 div 类:design-box-triple、double 和 single。有多个具有不同类的 div,它们都是浮动的,以便响应。
<div class="collageWidgets">
<div class="design-box-double"></div> <!--width 50%-->
<div class="design-box-triple"></div> <!--width 33%-->
<div class="design-box-triple"></div> <!--width 33%-->
<div class="design-box-triple"></div> <!--width 33%-->
<div class="design-box-double"></div> <!--width 50%-->
<div class="design-box-double"></div> <!--width 50%-->
<div class="design-box-single"></div> <!--width 100%-->
<div class="design-box-single"></div> <!--width 100%-->
</div>
我想要的是使用 jQuery 来检查 div 是否具有特定条件的类,然后用 div 行包装,使其宽度为 100%,float:left div 保持视觉美观并且不会破坏漂浮。
示例最终结果:
<div class="collageWidgets">
<div class="row"> <!--width 100%-->
<div class="design-box-double"></div> <!--width 50%-->
</div>
<div class="row"> <!--width 100%-->
<div class="design-box-triple"></div> <!--width 33%-->
<div class="design-box-triple"></div> <!--width 33%-->
<div class="design-box-triple"></div> <!--width 33%-->
</div>
<div class="row"> <!--width 100%-->
<div class="design-box-double"></div> <!--width 50%-->
<div class="design-box-double"></div> <!--width 50%-->
</div>
<div class="row"><!--width 100%-->
<div class="design-box-single"></div> <!--width 100%-->
</div>
<div class="row"><!--width 100%-->
<div class="design-box-single"></div> <!--width 100%-->
</div>
<div class="row"> <!--width 100%-->
<div class="design-box-triple"></div> <!--width 33%-->
<div class="design-box-triple"></div> <!--width 33%-->
<!-- Example missing triple, but won't look messed up because it is wrapped with a row 100% width, display block, and clearfix-->
</div>
</div><!--End of Collage Widget Div-->
这是我拥有的双重和单一工作的 jQuery。 我在三重代码上苦苦挣扎。 带有 design-box-triple 的 div。
这是我的逻辑思维:
我需要检查前一个对象父级是否有 class="row" && 如果 div 有类 design-box-triple。如果是,则将第一个具有 design-box-triple 的小部件推送到数组中。然后检查下一个对象是否具有设计框三重类,如果没有,则将三重小部件包装在 div class= row 中。然后我需要检查第一个类是否有 design-box-triple,下一个有 design-box-triple,然后下一个有 design-box-triple 将所有内容包装在一个 div class= row 中。但是,如果只有两个具有类 design-box-triple 的 div 彼此相邻,则将其包装成一行。
这是我的代码:
(function() {
var widgetArray = $(".careerCollageWidgets").find(".career-widget");
var prevClass = '';
var prevObject = '';
var prevPrevObject = '';
var tripleArray = [];
console.log(widgetArray.length);
$(widgetArray).each(function(index, value){
console.log($(this));
var widget = $(this);
if (widget.hasClass('design-box-single')){
widget.wrapAll('<div class="row"></div>');
prevClass = 'design-box-single';
} else if (widget.hasClass('design-box-double')){
if(prevClass == 'design-box-double' && !prevObject.parent().hasClass('row')) {
//var previousArray = [prevObject, widget];
prevObject.add(widget).wrapAll('<div class="row"></div>');
} else if (!widget.next().hasClass('design-box-double')){
widget.wrapAll('<div class="row"></div>');
}
prevClass = 'design-box-double';
} else if (widget.hasClass('design-box-triple')){
tripleArray.push(widget);
if (!prevObject.parent().hasClass('row')){
tripleArray.push(widget);
console.log(tripleArray);
console.log("tripleArray");
//tripleArray.wrap('<div class="row"></div>');
}
//else if(prevClass == 'design-box-triple' && !prevObject.parent().hasClass('row')) {
// if (!widget.next().hasClass('design-box-triple')){
// prevObject.add(widget).wrapAll('<div class="row"></div>');
// }
//}
//else if (!widget.next().hasClass('design-box-triple')){
// widget.wrapAll('<div class="row"></div>');
//}
prevClass = 'design-box-triple';
}
prevObject = widget;
});
})();
$('.row').css({'width':'100%', 'display':'block'});
$('.row').addClass('clearfix');
【问题讨论】:
-
您应用到
.row的 CSS 是 div 的默认值。应该没有必要。
标签: javascript jquery