我对使用 Masonry 库生成堆叠 div 的网站有疑问。当我刷新页面并单击页面上的单个选项卡时,我得到了正确的堆叠。但是,在单击另一个选项卡而不刷新页面后,我获取数据并使用各种 div 填充文档。
只有在立即加载后单击选项卡时,我才能看到堆叠正确完成。在单击一个或多个选项卡后单击另一个选项卡时,我看到不正确的堆叠。
我被迫刷新页面,然后按一次选项卡以获得正确的结果。
我做错了什么,我该如何解决这种行为?
HTML
<div id="tabDiv">
<ul class="tabbed">
<li id="tab1"><div style="position:relative"><a class="tab" onclick="FetchGroupJobs(1)" style="width:100%">Designers</a></div></li>
<li id="tab2"><div style="position:relative"><a class="tab" onclick="FetchGroupJobs(2)" style="width:100%">Viz Artists</a></div></li>
<li id="tab3"><div style="position:relative"><a class="tab" onclick="FetchGroupJobs(3)" style="width:100%">Production Artists</a></div></li>
<li id="tab4"><div style="position:relative"><a class="tab" onclick="FetchGroupJobs(4)" style="width:100%">2D Artists</a></div></li>
<li id="tab5"><div style="position:relative"><a class="tab" onclick="FetchGroupJobs(5)" style="width:100%">Help Desk</a></div></li>
</ul>
</div>
<br />
<div id="gridDiv">
</div>
JS
function FetchGroupJobs(WorkGroupID) {
$.ajax({
url: url,
data:data,
success : function (json) { //First get users
for (var key in json) { //Then loop through users to get jobs
addGridToDiv(key);
$("#grid" + key).kendoGrid({
dataSource: {
transport: {
read: {
url: '/api/workgroupreport/' + WorkGroupID + '/' + json[key].ArtistID,
dataType: "json",
async: false
}
}
},
dataBound: function()
{
var header = $("#grid" + key + " tr")[0];
$(header).append("<th class='count'>" + this.dataSource.total() + "</th>");
},
columns: [
{
field: "JobDescription",
title: json[key].ArtistName
}
]
});
}
},
dataType: "json",
async: false
});
}
$(document).ready(function () {
$('#gridDiv').masonry({
itemSelector: '.k-grid',
columnWidth: 210,
gutter: 10
});
});`