Ich verwende Freebase Search Suggest, um ein bestimmtes Schlüsselwort an eine getJson-Anfrage zu binden. Das Problem ist, dass ich getJson-Funktionen und die entsprechenden .append / .prepend-Funktionen an das Eingabefeld binde, das von der Suche vorgeschlagen wird. Wenn ich nun mein Div löschen möchte (.empty), das das Ergebnis der getJson-Funktionen enthält, kann ich am Ende nichts hinzufügen.

Jedes Mal, wenn ich eine Suche durchführe, bleibt das Ergebnis div leer. Wenn ich nicht versuche, die leere Funktion auszuführen und eine zweite Suche durchzuführen, werden die neuen Informationen an die vorherigen Informationen angehängt.

Meine Website www.karsten-tietje.dk/sw

$('#myinput').suggest({key: "<mykey>","filter": "(all type:/music/musical_group )"

        })
        .bind("fb-select", function(e, data) {

$.getJSON("http://ws.spotify.com/search/1/track.json?q="+search_val, function(data) {
  items = [];

        $.each(data["tracks"], function(key, val) {
        items.push('<li class="spot"><span typeof="MusicRecording" property="track"><p>Name: <strong><span property="name">' + val["name"] + '</span></span></strong></p> <p>Album <strong>' + val.album["name"] + '</strong></p><p> Released: <strong>' + val.album["released"] +'</strong></p><p><strong><a href="' + val["href"] +'"><i class="icon-play-sign"></i> Start Spotify</a></strong></p>');
            if ( key === 7 ) 
            {
            return false;
            }
        });

        $('#spotify-div').prepend('<h3 style="border-bottom:1px solid white;">Spotify tracks</h3>');
        $('#spotify').html(items.join('</li>'));
    });
});

Dies ist nur ein Ausschnitt aus meinem Code. Ich führe mehrere getJson-Funktionen aus.

Wie kann ich mein Ergebnis div löschen / leeren, bevor ich die anderen Funktionen ausführe?

13
Karsten Tietje 30 Nov. 2013 im 01:38

4 Antworten

Beste Antwort

Viele Leute haben die Mechanismen des Clearings erklärt, was sich so anhört, als ob Sie es bereits verstanden haben. Vielleicht ist das fehlende Teil wann , um es zu tun. Sie möchten die Dinge wahrscheinlich als erstes in Ihrem Freebase Suggest Select-Rückruf löschen, bevor Sie eine der Abfragen an andere Dienste wie Spotify (d. H. Vor dem ersten $ .getJSON ()) auslösen.

Nicht im Zusammenhang mit Ihrer Frage, aber vergessen Sie nicht die Zuordnungspflicht der Freebase-Lizenz (derzeit nicht auf Ihrer Website verfügbar).

EDIT: Hier ist Ihr Code mit leer hinzugefügt:

$('#myinput').suggest({key: "<mykey>","filter": "(all type:/music/musical_group )"

        })
.bind("fb-select", function(e, data) {
    $('#spotify-div').empty(); // empty the div before fetching and adding new data
    $.getJSON("http://ws.spotify.com/search/1/track.json?q="+search_val, function(data) {
        items = [];
        $.each(data["tracks"], function(key, val) {
            items.push('<li class="spot"><span typeof="MusicRecording" property="track"><p>Name: <strong><span property="name">' + val["name"] + '</span></span></strong></p> <p>Album <strong>' + val.album["name"] + '</strong></p><p> Released: <strong>' + val.album["released"] +'</strong></p><p><strong><a href="' + val["href"] +'"><i class="icon-play-sign"></i> Start Spotify</a></strong></p>');
            if ( key === 7 ) 
            {
            return false;
            }
        });

        $('#spotify-div').prepend('<h3 style="border-bottom:1px solid white;">Spotify tracks</h3>');
        $('#spotify').html(items.join('</li>'));
    });
});
15
Tom Morris 2 Dez. 2013 im 05:11

Wählen Sie das -Element aus und setzen Sie HTML wie unten leer

jQuery('#selector').html('');

Anschließend wenden Sie die append jquery-Funktion auf denselben Selektor wie unten an

jQuery('#selector').append("<p>text</p>");

8
Hamza Zafeer 31 Jän. 2018 im 15:44

Sie können dies auch tun, indem Sie das innere HTML des HTML-Codes mit der ID "spotify" löschen:

$('#spotify').empty();
5
Goodbye StackExchange 31 Jän. 2018 im 15:05

Mit jQuery gibt es viele Möglichkeiten, ein Element seines Inhalts zu leeren und Inhalte anzuhängen / voranzustellen.

Eine davon ist .empty(); (Dokumentation)

$('#spotify-div').empty().prepend('<h3>YourHTML Here</h3>');


Ein anderes ist .html( [ html ] ); (Dokumentation)

$('#spotify-div').html('').prepend('<h3>YourHTML Here</h3>');

Wenn Sie den HTML-Code ändern und sich keine Sorgen um das Beibehalten von Ereignissen machen, können Sie Ihren HTML-Code einfach über die Funktion .html( 'Your HTML' ); übergeben

$('#spotify-div').html('<h3>YourHTML Here</h3>');
3
Shawn G. 29 Nov. 2013 im 21:49