0

tabs動的にロードされるコンテンツを jQuery に適用したいと考えて います。問題はtabs、コンテナがロードされる前に関数が適用されるため、レンダリングされたタブが表示されないことです。デバッグ しばらく待つことはできませんが、正常に動作します。

私のバックグラウンドは、詳細を展開可能な行として表示するマスター/詳細グリッドです。グリッド行をクリックするたびに、ajax を介して名前付きの別のページに詳細を尋ね、実際には動的に生成された名前付きmypage.aspxのデータを受け取りました。データを取得したら、mypage.aspx の内容に関数を適用します。divcontentDetailtrtabs

これが私のコードです:

var html = '<tr id="newRow"><td colspan="4"><div id="contentDetail"></div></td></tr>';

$('#mygrid tr').each(function () {
    $(this).on('click', function () {
        // I create a row on the fly and append it next to the clicked row
        // ...
        // I load the contents
        $('#contentDetail').load('mypage.aspx #div1', { data: '123' }, function (response, status, xhr) {
            if (status == "error") {
               // ERROR
            }
        });
        // Here I want to apply the tabs
        $('#contentDetail').ready(function () {
            $('.tabs').tabs();
        });

    });

アップデート:

$.when($('#contentDetail').load('mypage.aspx #div1', { data: '123' }, function (response, status, xhr) {
            if (status == "error") {
               // ERROR
            }
        })).then($.getScript('Scripts/function.js'));

関数.js : $('#tabs').tabs();

4

3 に答える 3

1

これを試してください:

    var html = '<tr id="newRow"><td colspan="4"><div id="contentDetail"></div></td></tr>';

   $('#mygrid tr').each(function () {
    $(this).on('click', function () {
        // I create a row on the fly and append it next to the clicked row
        // ...
        // I load the contents
        $('#contentDetail').load('mypage.aspx #div1', { data: '123' }, function (response, status, xhr) {
            if (status == "error") {
               // ERROR
            }
             if(status == "success"){
              // Here I want to apply the tabs

            $('.tabs').tabs();

              }

        });


    });
});
于 2013-03-12T15:31:34.927 に答える
0

コールバック関数のelse句を使用して解決しました。load

if (status == "error") {
    // Error
}
else {
   // HERE THE CONTENT IS FULLY LOADED
   $('#tabs').tabs();
}
于 2013-03-12T14:31:58.583 に答える
0

/ Deferred の場合、jQuery を使用してそれを行うことができます。

$.when($('#contentDetail').load('mypage.aspx #div1')).then($('.tabs').tabs());
于 2013-03-12T12:50:49.450 に答える