Klaus, I posed this response to another thread, but it does not appear to be logging, so I'm trying a post via email.
****************************************** ****************************************** Klaus, Thanks for the assistance on another thread...thought I would add to this thread as I have found that I CAN replicate the non-indexing bug and have attempted to work-around it before I found this thread. Here is the demo: http://radsrc.fastcheapweb.com/siteignite/poppage The initial tabs load behaves as one would expect. The alert boxes indicate the tab events that are fired. BTW, the URLs are dynamically generated and refreshed and work great in the initial load. Here's how to gen problems: 1. Select "Home" from the "Templates" dropdown. 2. Select "Careers" from the "Pages" dropdown (actually select anything you wish) Here's what happens when you do that: 1. An ajax form returns the list divs for new tabs that appears in #NewTabs. I started down this kludgy path because if I set the ajax target to the tabs container I could never get the tabs to refresh. Instead I "remove" the "old" tabs and "add" new tabs that appear as a list of divs in #NewTabs. 2. When the new tabs are returned, the function readyTabs() is called. This function: (a) Gets the Initial count of the tabs present (b) Adds the "new" tabs (c) Deletes all but one of the "old" tabs The portion that is germane to this thread is that I found that I had to delete BACKWARD decrementing: var delCount = initCount-1; while(delCount!=0){ window.$tabsPara=window.$tabsPara.tabs( "remove", delCount); delCount=delCount-1; } ...as opposed to simply iterating through using: window.$tabsPara.tabs( "remove", 0); If you try and remove the tabs that way--or by incrementing [ ( "remove", 0), ( "remove", 1), ( "remove", 2)...]--then it will fail because the tabs don't get re-indexed faster than the deleting loop. Other things that I found were: * If you delete all of the tabs before adding new ones, the panel disappears. * Options "tabTemplate" seems to work, but "panelTemplate" does not. I have tried numerous variations from simple "<div></div>" to fully-generated "<div style='' class='ui-tabs-panel' id='CurrentContent'></div>". My "work-around" was to generate a blank tab at initialization, disable that tab, and then never delete this associated tab and panel. This seemed to preserve the panel while I deleted the initial tabs. Okay, now the problem that I have now: After the new tabs are created, their events stop firing (see "gen problems" above). I thought maybe it was because the tabs() calls were not refreshing the object, so the last thing that I tried was always returning that result back into the object using "window.$tabsPara=", but it while the tab control _appears_ to be "selecting...loading...focusing'' none of the events are being fired. Here is the relevant code: window.CurrentPanel = ""; window.$tabsPara = $("#si > ul").tabs({ selected: null, remote: true , spinner: 'Please wait...', tabTemplate:"<li><a href='#{href}' title='CurrentContent' ><span>#{label}</span></a></li>", panelTemplate: "<div style='' class='ui-tabs-panel' id='CurrentContent'></div>", disabled: [0], select: function(e, ui) { alert('select'); // update global for editor synch AND AJAX call // try this for speed increase //find(":nth-child(1)") CurrentPanel =$(ui.tab).children(":first-child").html(); // make URL var ajxURL=CurrentURL +'/ajx_crud/' +CurrentPanel +'/'+$('#selectTemplates').val() +'/'+$('#selectPages').val() +'/R'; // crud parameter--'read' // trim spaces ajxURL = $.string(ajxURL).strip().str; // clear / re-set editor var html ="<p>"; $.fck.setHTML('textarea1', html); // alert('SELECT ui.index--'+ui.index) // refresh URL window.$tabsPara.tabs( "url", ui.index, ajxURL); return true; }, load: function(ui) { alert('load'); // ajax load if nothing is peending var pendingTab='#pend'+window.CurrentPanel; var pendHTML = $(pendingTab).val(); if (pendHTML != "unset") { $('#CurrentContent').html(pendHTML); return false; } else { return true; } }, show: function(ui) { alert('show'); // container that has "current" db value var currentDB='#init'+window.CurrentPanel; if($(currentDB).val()=="unset"){ $(currentDB).val($('#CurrentContent').html()); }; return true; }, add: function(e,ui) { alert('add'); CurrentPanel =$(ui.tab).children(":first-child").html(); var ajxURL=CurrentURL +'/ajx_crud/' +CurrentPanel +'/'+$('#selectTemplates').val() +'/'+$('#selectPages').val() +'/R'; // crud parameter--'read' // trim spaces ajxURL = $.string(ajxURL).strip().str; window.$tabsPara.tabs( "url", ui.index, ajxURL ) return true; } }); function readyTabs(){ // get the starting number of tabs var initCount = window.$tabsPara.tabs("length"); // add new tabs $("#NewTabs > div").each(function(i){ var label = $(this).text(); // alert(label); window.$tabsPara=window.$tabsPara.tabs( "add", label, label); }); // initCount is the number of tabs, but array is 0-based var delCount = initCount-1; while(delCount!=0){ window.$tabsPara=window.$tabsPara.tabs( "remove", delCount); delCount=delCount-1; } // now select first tab so that CurrentPanel has a default value set window.$tabsPara=window.$tabsPara.tabs( "select", 1); // reset init and post textareas readyReset(); iconStates(CurrentPanel); // DEBUG ONLY // alert('here'+$(this).val()); } Of course, feel free to view source at http://radsrc.fastcheapweb.com/siteignite/poppage Sorry for the long post...again. Russ --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "jQuery UI" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/jquery-ui?hl=en -~----------~----~----~----~------~----~------~--~---
