使用jquery根据列的累积宽度将列分成组(行)
Divide columns into groups (rows) based on their cumulative width with jquery
我有许多列(不同宽度)正在生成,我需要根据它们的宽度将它们分成组或行。每当列的累计宽度达到100%时,我想将这些列分组到一个新的div中。
我让一个朋友帮我看看这个,他回来了,但我仍然不能让它工作。如果有人能提供任何帮助,我将不胜感激。
$.fn.gridRows = function() {
var cumulativeWidth = 0;
var items = [];
$('.column',this).each(function(index){
var col = $(this);
col.data('index', index);
var percentageWidth = (100 * parseFloat(col.css('width')) / parseFloat(col.parent().css('width')));
cumulativeWidth += percentageWidth;
items.push(index);
if(cumulativeWidth >= 100){
if(items.length == 1){
col.wrap('<div></div>');
}else{
var selector = '*' + items.join('][data-index=').substring(1) +']';
$(selector).wrap('<div></div>');
}
items = [];
cumulativeWidth = 0;
}
});
}
$(document).ready(function() {
$('body .group').gridRows();
});
我已经改变了一点,但这对我来说是有效的。至少,它将列分组到总宽度不超过100%的框中!
$.fn.gridRows = function() {
var cumulativeWidth = 0,
columns = $('.column',this),
rowItems = [];
var group = function(items) {
if (items.length) {
$('<div></div>').insertBefore(items[0]).append(items);
}
}
for (var i = 0, l = columns.length; i < l; ++i) {
var $column = $(columns[i]),
width = Math.round(100/$column.parent().width() * $column.width());
if (cumulativeWidth + width > 100) {
group(rowItems);
cumulativeWidth = 0;
rowItems = [];
}
cumulativeWidth += width;
rowItems.push($column[0]);
}
group(rowItems);
}
相关文章:
- jQuery使用anoSlide在手机上滑动
- jQuery使用api获取typeform结果
- JQuery使用相同的功能自动完成各种输入文本
- jQuery:使用“jQuery验证”后无法提交表单's远程验证
- jQuery使用ajax自动完成问题-TypeError:this.source不是函数
- jQuery:使用substr()的另一种方法
- 我如何让jQuery使用Greasemonkey 0.8脚本(在Firefox 2上),在没有互联网的情况下使用PC
- jquery使用name from变量按类选择元素
- JQuery:使用clone()生成的元素不采用原始的事件属性
- jQuery使用$.post上传文件
- 如何将数据附加到DOM元素以供jQuery使用
- jquery使用val()复制值似乎可以删除换行符
- jQuery使用.of()删除事件处理程序时出现的问题
- jquery使用输入框内容
- jQuery:使用实时事件添加tabindex属性
- Jquery使用html对象添加更多内容
- jQuery 使用 .scroll(handler) 滚动到元素
- PHP jQuery使用多个单词传递值
- 防止已选择的选项 Jquery 使用 MYSQL 自动完成
- jQuery使用XML数据更新UL列表