Skip to content

Instantly share code, notes, and snippets.

@justincron
Created February 7, 2013 19:33
Show Gist options
  • Save justincron/4733500 to your computer and use it in GitHub Desktop.
Save justincron/4733500 to your computer and use it in GitHub Desktop.
Cool twitter feed. You must use latest version of jquery to.
ul {
list-style-type: none;
margin: 0;
padding: 0;
}
li {
background: #eee;
margin: 5px;
padding: 30px;
}
.loading {
background: #000;
border: 0;
-webkit-border-radius: 36px;
-moz-border-radius: 36px;
border-radius: 36px;
box-shadow: 0 1px 1px -1px #fff;
display: block;
height: 46px;
left: 50%;
margin:-23px 0 0 -23px;
opacity: .18;
overflow: hidden;
padding:1px;
position: fixed;
text-align:center;
top: 50%;
width: 46px;
z-index: 9999999;
}
<ul id="lazy_list"></ul>
<div class="loading" style="display:none;"><img src="http://code.jquery.com/mobile/1.1.0/images/ajax-loader.gif" width="46" height="46" alt="Loading..." /></div>
<div class="no_results" style="display:none;">No results found.</div>
var item_page = 1; // Page of items
var items_per_page = 10; // Items per page
var cancel_request = false; // Cancel request flag
var stop_scroll = false; // Stop scroll flag
function getItems(page) {
if (cancel_request === false) {
$.getJSON('http://search.twitter.com/search.json?q=justincron&rpp=' + items_per_page + '&page=' + page + '&include_entities=1&result_type=mixed&callback=?', function(data) {
// Query server for items
$.each(data.results, function(index) {
$('<li>' + data.results[index].text + '</li>').appendTo("#lazy_list");
});
// Turn off requests if current result set is less than page min
if ($(data.results).length < items_per_page) {
cancel_request = true;
}
// Show message if no items
if ($(data.results).length === 0) {
$(".no_results").show();
}
}).success(function() {
// Success
item_page++; // Increment page value
$(".loading").hide(); // Hide loading screen
stop_scroll = false; // Restart scroll
}).error(function() {
// Error
});
} else {
// Hide loading screen
$(".loading").hide();
}
}
$(document).ready(function() {
// Load initial page of tweets on load
getItems(item_page);
// Stop everything if no more requests
if (cancel_request === false) {
// Window scroll event
$(window).scroll(function() {
// Check if scroll is stopped to avoid multiple requests of the same page
if (!stop_scroll) {
// If user scrolls to the bottom of the page, grab the next page of tweets
if (($(window).scrollTop() + 100) >= ($(document).height() - $(window).height())) {
// Bottom of screen
stop_scroll = true; // Stop scroll event
$(".loading").show(); // Show loading screen
getItems(item_page); // Get next set of items
}
}
});
}
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment