2010-11-30 4 views
0

Ich habe das folgende Problem. Ich versuche, eine Reihe von Tab laden mit jQuery dynamisch laden. Wenn ich die neuen Inhalte (per POST) bekomme, bricht die tabs() -Funktion ab und erstellt keine Tabs. Ich verwende diese Funktionen:bereit Zustandsproblem mit Ajax und Jquery

$(document).ready(function() { 
    var array_with_alias_id = $.getJSON("/getAliasForMatchAll/", null, 
     function (data){ 
      array = data.aliases_id; 
      load(array); 
     }); 
    $("#next_left").click(function(){next_left()}); 

    //load(array_with_alias_id); 
}); 



function next_left(){ 
    if(j >= array.length-1){ 
     var l = j 
    } else { 
     var l = j+=1; 
    } 
    $("#alias_id_left").val(list_left[l]); 
    $("#merge_alias_id_left").val(list_left[l]); 
    $.post("/visor/",{"alias_id":list_left[l],"position":"L"}, 
      function(data){ 
       $("#tabsL").html(data).ready(function(){ 
        $("#tabsL").tabs(); 
       }); 
      }); 
} 

Ich denke, dass mein Problem ein Ajax Problem ist, und ich habe diesen [0], aber ich nicht mit der Lösung geben kann. Die Funktion next_left() funktioniert nur einmal. Ich denke, dass das Dokument für diese Funktion bereit ist, aber wenn ich die Registerkarten laden funktioniert es (ich denke, dass Registerkarte die Methode abbrechen aufrufen, denn wenn ich die HTML mit Firebug es ändern, aber nicht alle).

Irgendwelche Hinweise?

[0] http://docs.jquery.com/Tutorials:AJAX_and_Events

Antwort

0

Leute im IRC halfen mir. Ich habe nun die Funktion nach dem .post dazu geändert:

function next_left(){ 
    if(j >= array.length-1) { 
     var l = j 
    } 

    else { 
     var l = j+=1; 
    } 

    $("#alias_id_left").val(list_left[l]); 
    $("#merge_alias_id_left").val(list_left[l]); 
    $.post("/visor/",{"alias_id":list_left[l],"position":"L"}, 

    function(data) { 
     $("#tabsL").html(data).tabs("destroy").tabs();     
    }); 
} 

Sie rieten mir richtig, dass die Ready-Funktion auf das Dokument gilt und nicht funktioniert, wie ich es verwendet. Ich hoffe, dass der hier veröffentlichte Code anderen hilft.

1

Versuchen Sie ersetzen $ ("# next_left") klicken (function() {next_left()}). mit:

$("#next_left").live('click', function(){next_left()}); 
+0

Ich denke, es sollte helfen. –

+0

Danke Nick G, aber es funktioniert nicht :-( Jeder andere Tipp, bitte. – rfrp