Thursday, May 23, 2024
 Popular · Latest · Hot · Upcoming
105
rated 0 times [  112] [ 7]  / answers: 1 / hits: 86619  / 11 Years ago, fri, november 29, 2013, 12:00:00

I'm using Freebase Search Suggest to bind a certain keyword to a getJson request. The problem is that I bind getJson functions and the corresponding .append/.prepend functions to to the input field that has the search suggest. Now if want to clear(.empty) my div that contains the result from the getJson functions i end up not being able to appennd anything.



So every time I do a search the result div stays empty. If I not try to run the empty function and do a second search, the new information gets appended on top of the previous information.



My site 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>'));
});
});


This is just a snippet of my some of my code. I run multiple getJson functions.



How can I clear/empty my result div before running the other functions?


More From » jquery

 Answers
66

Lots of people have explained the mechanics of clearing, which it sounds like you already understand, so perhaps the missing piece is when to do it. You probably want to clear things as the very first thing in your Freebase Suggest select callback, before you fire off any of the queries to other services like Spotify (i.e. before the first $.getJSON()).



Not related to your question, but don't forget the attribution requirement of the Freebase license (not currently provided on your web site).



EDIT: Here's your code with empty added:



$('#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>'));
});
});

[#73984] Thursday, November 28, 2013, 11 Years  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
breonnamayah

Total Points: 574
Total Questions: 115
Total Answers: 96

Location: England
Member since Sun, May 21, 2023
1 Year ago
breonnamayah questions
;