jQuery-UI tabs: Upgrade von 1.9.x auf 1.10.x
    
Ronny Riedel
    
    
      
    
  - javascript
 nicht angemeldet
 nicht angemeldetHallo zusammen,
in einem Kalender nutze ich jQuery-UI "tabs" um das Einstellen von Serienterminen zu ermöglichen. Die Maske sieht dabei ähnlich aus wie die in Outlook.
Der HTML-Code dazu:
<div id="tabs">  
   <ul>  
      <li><a href="#daily">Täglich</a></li>  
      <li><a href="#weekly">Wöchentlich</a></li>  
      <li><a href="#monthly">Monatlich</a></li>  
   </ul>  
   <div id="daily">  
      <ul>  
         <li>  
            <input type="radio" name="abc" value="1" checked="checked" class="clsRdoBtn">  
            <!-- (weitere FORM-Elemente) -->  
         </li>  
         <li>  
            <input type="radio" name="abc" value="2" class="clsRdoBtn">  
            <!-- (weitere FORM-Elemente) -->  
         </li>  
      </ul>  
   </div>  
   <div id="weekly">  
      <ul>  
         <li>  
            <input type="radio" name="abc" value="3" class="clsRdoBtn">  
            <!-- (weitere FORM-Elemente) -->  
         </li>  
      </ul>  
   </div>  
   <div id="monthly">  
      <ul>  
         <li>  
            <input type="radio" name="abc" value="4" class="clsRdoBtn">  
            <!-- (weitere FORM-Elemente) -->  
         </li>  
         <li>  
            <input type="radio" name="abc" value="5" class="clsRdoBtn">  
            <!-- (weitere FORM-Elemente) -->  
         </li>  
      </ul>  
   </div>  
</div>  
Wenn die Seite geladen wird, dann soll das Tab mit dem aktuell ausgewählten Radio-Button ausgewählt werden. Das ging bis jQuery-UI 1.9.x mit folgendem Code:
var strId = $("#tabs").find("input.clsRdoBtn").filter(":checked").parents("div").attr("id");  
$("#tabs").tabs("select", strId);  
Mit jQuery-UI 1.10.x geht das nicht mehr, da die Option "select" durch die Option "active" ersetzt wurde (Link).
$("#tabs").tabs( "option", "active", <INDEX> );  
Das Problem ist jetzt, das die neue "active" Option nicht die obige Syntax mit einer HTML-ID unterstützt, sondern als 3. Parameter immer den (nummerischen) Index des zu selektierenden Tabs haben will (Link).
Frage: Wie ermittelt man diesen?
Grüße
  RR
Hallo nochmal,
ich hab mal den Code der beiden jQuery-UI Versionen verglichen und festgestellt, das die interne Funtion "_getIndex()" in Version 1.10.x in diesem Zusammenhang nicht mehr verwendet wird.
Es gibt sogar einen Bug-Eintrag dafür (activate tab by id selector), der aber leider mit dem Hinweis "not a bug" geschlossen wurde.
Ich hab mir die "_getIndex()"-Funktion aus 1.9.x zum Vorbild genommen und folgende Lösung gefunden:
var strId   = $("#tabs").find("input.clsRdoBtn").filter(":checked").parents("div").attr("id");  
var numIndx = $("#tabs > ul").find("a").index( $("#tabs > ul").find("a").filter("[href=#" + strId + "]") );  
  
$("#tabs").tabs("option", "active", numIndx);  
Grüße
  RR