我在网页上有一个jQueryUI Tabs控件。每个选项卡都包含一个或多个Slickgrid网格。
有时,但是我没有找到特定的模式,在删除标签时(因此删除了Slickgrid的实例),我得到了:
// slick.grid-2.0.merged.min.js: Microsoft JScript runtime error: Invalid argument
Z[0].styleSheet.cssText=a.join(" ")
然后传播到
// jquery-1.7.1.min.js: Microsoft JScript runtime error: Exception occurred.
a.execScript||function(b){a.eval.call(a,b)})(b)
是什么导致了这个问题,我该如何解决/解决它?
答案 0 :(得分:0)
在@Tin发表评论之后,我确保SlickGrid的每个实例在与之相关联的HTML元素之前被销毁,并被Ajax结果替换。
利用
Is there a way to get an instance of SlickGrid from an element
我最终得到了这样的代码:
初始化SlickGrid实例:
grid = new Slick.Grid("#myGridDiv", myDataView, myColumns, myOptions);
$('#myGridDiv').data('slickgrid', grid);
一般清理功能:
function cleanupSlickGrid() {
//@* Cleanup slickgrid instances. See: https://stackoverflow.com/questions/10129069/invalid-argument-error-with-slickgrid *@
var grids = $('.slick'); //@* I add the class 'slick' to each grid *@
jQuery.each(grids, function(i, val) {
var grid = $(this).data('slickgrid');
grid.destroy();
});
}
使用像这样的常规清理功能:
$.ajax(
{
url: removeUrl,
type: "POST",
success: function (data)
{
cleanupSlickGrid();
$('#myDivId').html(data);
}
}