0

Web ページに jQueryUI Tabs コントロールがあります。各タブには、1 つ以上の 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)

この問題の原因と回避策/解決方法を教えてください。

4

1 に答える 1

0

@Tin からのコメントに従って、関連付けられている HTML 要素が Ajax の結果に置き換えられる前に、SlickGrid のすべてのインスタンスが破棄されるようにしました。

レバレッジ

要素から SlickGrid のインスタンスを取得する方法はありますか

私はこのようなコードで終わった:

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); 
    }
}
于 2012-06-25T04:32:14.350 に答える