2011-01-12 12 views
0

Ich bin mir nicht sicher, wie genau zu beschreiben/fragen, so dass ich es mein Bestes geben werde. Ich verwende Add Tab-Funktionalität in jquery Tabs. Auf der ersten Registerkarte habe ich ein jqgrid, mit dem ich Elemente auswählen kann, die in einem neuen Tab geöffnet werden sollen. Wenn ein Element ausgewählt ist, wird die neue Registerkarte erfolgreich erstellt, aber unterhalb des jqgrid wird ein div hinzugefügt, das ungefähr wie folgt aussieht (Leerraum hinzugefügt). Was könnte ich falsch machen, damit dieses Phantom-Div angezeigt wird? Ich habe das mit Firebug gefunden, aber da ich Tabs nicht gewechselt habe, sollte doch nichts angezeigt werden. Außerdem scheint es, dass für jedes addtab, das ich mache, 2 divs erstellt werden. Ist 2 normal?
EDIT: 2 ist nicht normal, der Beispielcode erstellt nicht zwei auf der jquery-Website.Jquery ui Registerkarte versteckt div erscheint auf Haupt Registerkarte

<div id="ui-tabs-2" class="ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide"></div> 

Danke.

Code für Addtab verwendet.

function addTab() { 
    var selected_row = $grid.jqGrid('getGridParam',('selrow')); 
    $tabs.tabs('add', selected_row, selected_row); 
} 

Und die Registerkarte Vorlage.

tabTemplate: "<li><a href='#{href}'>#{label}</a><span class='ui-icon ui-icon-close'>Remove Tab</span></li>", 

Bearbeiten: Grundsätzlich ein Tab hinzufügen erstellt zwei divs. IDs, die ungerade sind, werden tatsächlich gesucht, und sogar IDs sind nicht. (id a div mit id = "ui-tabs-3" ist korrekt, aber es wurde auch eine andere Registerkarte hinzugefügt, die von id = "ui-tabs-2" ist. Die 2 ist nicht erwünscht.) Nirgends sage ich es Fügen Sie zwei Tabs hinzu, und das gerade nummerierte Zeug ist dumby und hat nichts, aber ich glaube, es verursacht den verrückten Leerraum, jedes Mal, wenn ich einen neuen Tab hinzufüge, zu erscheinen und zu wachsen. Irgendwelche Ideen? Ich mache nichts Kompliziertes und kann den Code nicht weiter auseinander ziehen, ohne die Add-Funktionalität selbst zu entfernen.

Danke.

Edit: Und die Registerkarte init Zeug auch? Fehle ich etwas Offensichtliches? Es scheint so, als wären 6 Codezeilen beteiligt und man würde meinen, ich würde sehen, was ich vermasselt habe?

var $tabs = jQuery("#tabs").tabs({ 
        //tabTemplate: "<li><a href='http://localhost:8000/tickets/byId/#{href}/'>#{label}</a> <span class='ui-icon ui-icon-close'>Remove Tab</span></li>", 
       tabTemplate: "<li><a href='#{href}'>#{label}</a><span class='ui-icon ui-icon-close'>Remove Tab</span></li>", 
       ajaxOptions: { 
        error: function(xhr, status, index, anchor) { 
         jQuery(anchor.hash).html("If you're reading this then something didn't go right....oops."); 
        } 
       } 
      }).bind("tabsselect",function(event,ui){ 
       if (ui.index == 0) { 
        $grid.trigger('reloadGrid'); 
       } 
      }); 
+0

Haben Sie eine Debugging durchgeführt, um zu sehen, ob addTab möglicherweise mehr als einmal aufgerufen wird, wird die zusätzliche Registerkarte verursacht? –

+0

@Andrew Whitaker: Ich denke nicht, dass es ist. Aber ich kann mir nicht vorstellen, wie ich das mit dem Firefly herausfinden soll. Wenn es jedoch zweimal aufgerufen wird, denke ich, dass meine Tabs mehr als einmal selbst angezeigt würden. Die extra Divs, die erstellt werden, passen nicht zu irgendetwas. Auch wenn es zweimal aufgerufen würde, würde ich zwei identische Registerkarten erwarten, da die Zeile immer noch im jqgrid ausgewählt ist, was bedeutet, dass der zweite Aufruf die gleiche Registerkarte basierend auf der ersten Zeile meiner addTab-Funktion öffnen sollte. Klingt das logisch? – wilbbe01

+0

Ja, das macht Sinn - Sie könnten einen Haltepunkt in dieser Funktion in Firebug platzieren und sehen, wann er getroffen wird. (hier ist wie: http://getfirebug.com/javascript) –

Antwort

Verwandte Themen