2 Stimmen

JQuery Mobile wendet keine Stile auf dynamische Kontrollkästchen an und sie können nicht angeklickt werden.

Ich versuche, die Anzahl der Kontrollkästchen, die im fieldset-Tag angehängt wurden, zu aktualisieren, wenn auf den Menü-Tab-Fußzeilenbereich geklickt wird. Der Besuch des ersten Tabs ist in Ordnung, aber danach können alle Kontrollkästchen nicht mehr aktiviert werden. Ich habe meinen Code mehrmals geändert, aber es funktioniert nicht. Manchmal können sie aktiviert werden, aber ohne angewendeten Stil. Manchmal können sie nicht aktiviert werden, aber der Stil wird angewendet.

Ich habe .controlgroup('refresh'); und .checkboxradio("refresh"); ausprobiert, aber keines davon funktioniert. Ich habe mir die meisten ähnlichen Fragen angesehen, aber sie helfen mir nicht, dieses Problem zu lösen. Vielleicht habe ich den Code am falschen Ort platziert?

Für .checkboxradio("refresh"); zeigt die Konsole immer diesen Fehler an. cannot call methods on checkboxradio prior to initialization; attempted to call method 'refresh'

Dies ist mein Original-HTML und JS

          Löschen
          Alle löschen

Und das ist mein JS

runfirstDelete = true;
$('.delete_tab').click(function(){
$("#checkboxes_wrapper2").children().remove();
    var dataIndex;
    var dataName;
    for(var i in localStorage)
    {   
        dataIndex = JSON.parse(localStorage[i]).index;
        dataName = JSON.parse(localStorage[i]).name;

        if(runfirstDelete){ // Dies für den ersten Besuch funktioniert gut
            $("#checkboxes_wrapper2").append(''+dataName+'');
        }
        else{ //falls nicht, versuche, inline Stil im Element einzufügen
            $('#checkboxes_wrapper2').append(''+dataName+' ');
        }
    }
    runfirstDelete = false; // Dann anzeigen, dass es nicht der erste Klick auf den Tab war
});

5voto

Frédéric Hamidi Punkte 249635

Da Sie neue Elemente hinzufügen, werden keine jQuery Mobile-Widgets vorhanden sein, um sie zu ergänzen. Daher wird der Versuch, ihre refresh()-Methode aufzurufen, tatsächlich fehlschlagen.

Ein einfacher Weg, jQuery Mobile mit dem neuen Markup "aufzuholen", besteht darin, das create-Ereignis an einem Container-Element auszulösen:

$("#checkboxes_wrapper2").trigger("create");

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X