同步表大小调整
Synchronize Table Re-sizing
我使用JQuery插件colResizable (@alvaro-prieto)在我的应用程序中创建可调整大小的表,并有两个单独的表对象(相同的列数)。然而,我正在寻找一种方法来调整两个表的大小在同一时间(例如更新表1的列也更新表2的列同步)。请参阅下面的JSFiddle查看插件的交互式实现。
$("#sample").colResizable({liveDrag:true});
$("#sample2").colResizable({
liveDrag:true,
gripInnerHtml:"<div class='grip'></div>",
draggingClass:"dragging" });
我注意到你可以指定一个回调函数,如onDrag
,在"拖拽"列时始终触发。虽然这有助于我更接近一个解决方案,我仍然不知道一个具体的方法来同步表的更新。
我希望避免修改源代码,如果可能的话,找到一个合适的JS/JQ解决方案。
不幸的是,插件似乎没有办法以编程方式调整列的大小。现在,您可以使用onDrag
事件来模拟另一个表的列的大小调整。
到目前为止,我已经能够做到这一点,但这种"黑客"的方式似乎并不那么有效。
这是我每次拖动列时调用的函数:
function syncTableWidth(e){
var parent = e.currentTarget;
$("table").filter(function(){return $(this).attr("id") != $(parent).attr("id")}).each(function(){
//Match the width
$("tr th", this).each(function(index){
$(this).css("width",$("tr th:nth-of-type("+(index+1)+")", parent).css("width"))
});
//Match the grip's position
$(this).prev().find(".JCLRgrip").each(function(index){
$(this).css("left",$(parent).prev().find(".JCLRgrip:nth-of-type("+(index+1)+")").css("left"));
});
});
}
现在你可以像这样调用这个函数:
$("#my_table").colResizable({
liveDrag:true,
gripInnerHtml:"<div class='grip'></div>",
draggingClass:"dragging",
onDrag: syncTableWidth
});
这是我正在处理的JSFiddle。
相关文章:
- 内部分区字体大小获胜'调整浏览器窗口大小时不会随媒体查询而更改
- 调整窗口大小时,可拖动的对象会出现在容器外部
- ExtJS——在展开/折叠时调整面板高度
- 在控制器和数据对象之间同步数据
- 同步调用,直到用户通过angular验证为访问者
- javascript函数同步
- Chrome应用程序调整窗口大小保持纵横比
- 与运行长作业(javascript,node.js)的第三方API同步的最佳实践
- 如何自动调整标签的高度以适应内容
- 导航栏没有调整到浏览器屏幕的大小
- 调整屏幕大小后不显示子菜单
- 使用JavaScript根据窗口/视口的高度动态调整图像大小
- 合并两个数组,重新调整循环js
- 显示具有服务器端自动时间注销的同步倒计时计时器
- 如何将Knockout.JS与服务器已经在DOM中呈现的数据同步
- Morris.js折线图x轴标签在调整大小后消失
- 音频和动画在javasctipt循环中同步
- 调整缩放窗口高度提升缩放
- 调整屏幕大小时更改属性值
- 同步表大小调整