2013-07-25 3 views
0

Я использую JQuery UI Tabs для создания пользовательского интерфейса. Все содержимое моих вкладок загружается через ajax. Но я столкнулся с проблемой: когда пользователь выбирает вкладку, содержимое предыдущей выбранной вкладки должно быть сохранено (через ajax), и я не вижу никакого события, такого как вкладка «on leave current» (или что-то вроде этого), чтобы вызвать функцию сохранения. редактировать: Некоторые отрезала код (как I`m строить свои вкладки):JQuery ui вкладки "onLeave" событие?

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"); 
     } 
    } 
}); 
+0

Пожалуйста, размещайте какой-либо ссылочный код или сайт, где вы используете –

+0

Что изменяет ваши вкладки? Найдите этот фрагмент кода и вызовите функцию сохранения. – Virus721

ответ

1

Я думаю, что вы хотите использовать activate событие и ui.oldPanel для сохранения информации

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

Однако это похоже, что вы можете использовать другую версию пользовательского интерфейса jQuery, поскольку эта версия, похоже, не имеет метода «добавить» или «выбрать». Если вы можете подтвердить, какую версию вы используете, я могу дать лучший ответ.

Для JQuery UI 1.8.16

Старые версии JQuery не имеют событие реактивировать, однако вы можете отчасти имитировать функциональность выше, используя 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/

+0

Я использую версию 1.8.16 – Larry

+0

@LarryCablistu посмотреть, работают ли эти изменения для вас. – Danny

+0

Я использовал твои подсказки и все, все в порядке! Спасибо Дэнни! – Larry

0

Пожалуйста, проверьте эту страницу, Вы можете использовать ui.oldTab условие для проверки, какая вкладка оставить,

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

+0

Событие «активировать» не запускается, только событие «выбрать». – Larry