0

JQuery UI Tabs を使用してユーザー インターフェイスを構築しています。私のタブの内容はすべて ajax 経由で読み込まれます。しかし、私は問題に直面しています: ユーザーがタブを選択すると、以前に選択したタブの内容を (ajax 経由で) 保存する必要があり、「現在のタブを残す」(またはこのようなもの) のようなイベントは表示されません。 )「保存」機能をトリガーします。編集:一部の抜粋コード(タブの作成方法):

var id_p = "a value";
$( "#dialog-confirm" ).dialog({
    show: { effect: 'drop', direction: "up"},
    resizable: false,
    height:140,
    modal: true,
    buttons: {
        Yes: function() {
            var dlg = $( this );
            url = "/product/edit.php?id="+id_p;
            $.post(url, function(data) {
                data = $.parseJSON(data);
                loadUrl = data.loadUrl;
                title = data.title;
                tabIndex = data.tabIndex;
                $("#product_tabs").tabs("add",loadUrl,title);
                $("#product_tabs").tabs("select", tabIndex);
                initButtons();
                //document.location.reload();
                $( "#dialog-confirm" ).dialog( "close" );
            });
        },
        No: function() {
            $( this ).dialog( "close" );
        }
    }
});
4

2 に答える 2

1

activateイベントと ui.oldPanel を使用して情報を保存すると思います

$("#tabs").tabs({
    activate: function(event, ui) {
        //do ajax stuff with ui.oldPanel
    }
 });

ただし、このバージョンには「追加」または「選択」メソッドがないように見えるため、別のバージョンの jQuery UI を使用しているようです。使用しているバージョンを確認できれば、より良い回答を提供できます。

jQuery UI 1.8.16 の場合

古いバージョンの jQuery には activate イベントがありませんが、selectイベントを使用して上記の機能を模倣することができます。

$("#tabs").tabs();
var previousTab = 0; //init to what tab is selected at start
$( "#tabs" ).on( "tabsselect", function( event, ui ) {
    var previousPanel = $(this).data("tabs").panels[previousTab];
    //save tab info
    previousTab = ui.index; //store new previous tab
});

このフィドルhttp://jsfiddle.net/pw4y6/で例を見ることができます

于 2013-07-25T12:23:47.020 に答える
0

このページを確認してください. ui.oldTab条件を使用して、どのタブが離れているかを確認できます.

http://api.jqueryui.com/tabs/#event-activate

于 2013-07-25T12:33:57.457 に答える