2009-05-23 8 views
0

Ich bin sehr neu in der Programmierung, also bitte verzeih mir meine noobness. Ich verwende die ausgezeichneten jQuery-Registerkarten für meine Anwendung, ich lade externen Inhalt über AJAX in die Registerkarten, und in einer dieser Registerkarten muss ich den Inhalt dieser Registerkarte nach einem Ergebnis programmatisch neu laden. Ich habe die Dokumentation * vergeblich verfolgt.Stuck ajax Inhalt in einem jQuery Tab programmatisch neu laden

Javascript:

Ich habe die Tabs in meinem Root-Seite sehr einfach mit initialisiert

$(document).ready(function(){ 
    $("#tabs").tabs({ cookie: { expires: 30 } });  
    }); 

Die HTML:

<div id="tabs"> 
<ul> 
    <li><a href="#moderatorManage"><span>Find and Manage Moderators</span></a></li> 
    <li><a href="flaggedCards/" id="flaggedCards" ><span>Flagged Cards</span></a></li> 
    <li><a href="pendingDelete/"><span>SinBin/Pending Delete</span></a></li> 
</ul> 
</div> 

Sie kann ich eine externe URL von "sehen laden flaggedCards/"Dort habe ich mehr jQuery mit dieser Funktion:

$(document).ready(function(){ 
     $("#controls_{{id}} input").click(function() { 

       $(this).parent().parent().parent().addClass("highlight").fadeTo("slow", 0.1); 
       $("#tabs").tabs('load' , 0); // fails also tried various selectors 

     }); 
}); 

Was ich versuche zu tun ist, rufen Sie die Registerkarte FlaggedCards, um neu zu laden, wenn diese Funktion aufgerufen wird, habe ich verschiedene Syntaxen vergeblich versucht.

  • docs.jquery.com/UI/API/1.7.1/Tabs#method-load

Antwort

0

das Skript ausgeführt zu bekommen, müssen Sie sicherstellen, dass der Datentyp des AJAX-Anfragen ist „html "- siehe $.ajax options. Um dies zu tun, versuchen Sie die Tabs ajaxOptions Option beim Einrichten Ihrer Tabs.

$("#tabs").tabs({ cookie: { expires: 30 }, ajaxOptions: {dataType: "html"} });  

Das andere Problem könnte sein, dass die $(document).ready(function(){ wahrscheinlich Brennen nicht, wenn der Registerkarte Inhalt über Ajax geladen wird. Versuchen Sie, das und die entsprechende } zu entfernen. Wenn es Ihren Inhalt über Ajax lädt, wird es hoffentlich in das Dokument eingefügt, bevor es die Skripte entschlüsselt.

Ich habe keine Ideen mehr. Hoffe, dass hilft :-)

0

Ich sollte erwähnen, dass es die Skripts in den HTML-Code ausgeführt wird, siehe die Addclass-Funktion, die gut läuft, aber nach dem Ausführen, dass es nicht laden den Tab mit dem Code, den ich eingegeben habe. Ich werde versuchen, diesen Datentyp jedoch hinzuzufügen.

+0

Das wäre das '$ (document) .ready (function() {' bit then. '.ready 'wird nicht ausgelöst, wenn die Seite über Ajax geladen wird. Entferne das und mach daraus eine Straight Funktionsaufruf und es sollte OK gehen. –

+2

@Dan - Eigentlich $ (Dokument) .ready() löst ganz gut. Das Problem ist der Aufruf an.Tabs ('load') –

+0

Nun, ich habe hier das falsche Ende des Stocks. Du lernst jeden Tag etwas Neues :-) –

4

Ich konnte das gleiche Problem duplizieren, das Sie in Ihrem Beitrag melden. So habe ich es gelöst.

In der Root-Seite die Registerkarten Hosting, fügen Sie diese Funktion:

function selectTab(index){ 
$("#tabs").tabs('load', index); 
} 

Dann in Ihrer externen URL Seite "flaggedCards /", ersetzen Sie die Zeile, die sagt:

$("#tabs").tabs('load' , 0); 

mit diesem:

selectTab(0); 

Ich weiß nicht, warum diese Problemumgehung den Trick macht. Vielleicht ist es ein Fehler.