Skip to content

Instantly share code, notes, and snippets.

@A973C
Created July 6, 2012 15:03
Show Gist options
  • Save A973C/3060730 to your computer and use it in GitHub Desktop.
Save A973C/3060730 to your computer and use it in GitHub Desktop.
Expandable List
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Expandable List &middot; CodePen</title>
<style>
ul { margin-top: 1em; }
</style>
<style>
#codepen-footer, #codepen-footer * {
-webkit-box-sizing: border-box !important;
-moz-box-sizing: border-box !important;
box-sizing: border-box !important;
}
#codepen-footer {
display: block !important;
position: fixed !important;
bottom: 0 !important;
left: 0 !important;
width: 100% !important;
padding: 0 10px !important;
margin: 0 !important;
height: 30px !important;
line-height: 30px !important;
font-size: 12px !important;
color: #eeeeee !important;
background-color: #505050 !important;
text-align: left !important;
background: -webkit-linear-gradient(top, #505050, #383838) !important;
background: -moz-linear-gradient(top, #505050, #383838) !important;
background: -ms-linear-gradient(top, #505050, #383838) !important;
background: -o-linear-gradient(top, #505050, #383838) !important;
border-top: 1px solid black !important;
border-bottom: 1px solid black !important;
border-radius: 0 !important;
border-image: none !important;
box-shadow: inset 0 1px 0 #6e6e6e, 0 2px 2px rgba(0, 0, 0, 0.4) !important;
z-index: 300 !important;
font-family: "Lucida Grande", "Lucida Sans Unicode", Tahoma, sans-serif !important;
letter-spacing: 0 !important;
word-spacing: 0 !important;
}
#codepen-footer a {
color: #a7a7a7 !important;
text-decoration: none !important;
}
#codepen-footer a:hover {
color: white !important;
}
</style>
<script>
// Kill alerts, confirmations and prompts
window.alert = function(){};
window.confirm = function(){};
window.prompt = function(){};
window.open = function(){};
window.print = function(){};
</script>
</head>
<body>
<ul class="expandable-list">
<li>When there are more than three</li>
<li>of these list items</li>
<li>the fourth and subsequent will be hidden behind a 'view all' link</li>
<li>It should be possible to include more than one list on a page</li>
<li>The 'view all' link is redundant once clicked and doesn't need to come back</li>
<li>But perhaps it should</li>
</ul>
<ul class="expandable-list">
<li>When there are more than three</li>
<li>of these list items</li>
<li>the fourth and subsequent will be hidden behind a 'view all' link</li>
<li>It should be possible to include more than one list on a page</li>
<li>The 'view all' link is redundant once clicked and doesn't need to come back</li>
<li>But perhaps it should</li>
</ul>
<script src="http://code.jquery.com/jquery-latest.js"></script>
<script>
(function() {
var more = $('<li class="views-row all"><a href="javascript:">View all</a></li>');
/* hiding all lis after the first three */
$list = $('.expandable-list');
$list.each(function(){
$(this).append(more.clone());
$(this).children('li:gt(2)').not('li.all').hide();
});
// adding the 'Show More' link
//$list.append(more);
// binding a click event to 'Show More'
$('.all a').bind('click', function (e){
// hiding 'Show More' and showing the rest of the lis in this ul
$(this).parent().hide().siblings('li').show();
// preventing default action and event bubbling
e.preventDefault();
});
})();
</script>
<div id="codepen-footer">
<a style="color: #f73535 !important;" href="https://codepen.wufoo.com/forms/m7x3r3/def/field14=" onclick="window.open(this.href, null, 'height=517, width=680, toolbar=0, location=0, status=1, scrollbars=1, resizable=1'); return false">Report Abuse</a>
&nbsp;
<a href="/A973C/pen/20/1">Edit this Pen</a>
</div>
</body>
</html>
var more = $('<li class="views-row all"><a href="javascript:">View all</a></li>');
/* hiding all lis after the first three */
$list = $('.expandable-list');
$list.each(function(){
$(this).append(more.clone());
$(this).children('li:gt(2)').not('li.all').hide();
});
// adding the 'Show More' link
//$list.append(more);
// binding a click event to 'Show More'
$('.all a').bind('click', function (e){
// hiding 'Show More' and showing the rest of the lis in this ul
$(this).parent().hide().siblings('li').show();
// preventing default action and event bubbling
e.preventDefault();
});
<ul class="expandable-list">
<li>When there are more than three</li>
<li>of these list items</li>
<li>the fourth and subsequent will be hidden behind a 'view all' link</li>
<li>It should be possible to include more than one list on a page</li>
<li>The 'view all' link is redundant once clicked and doesn't need to come back</li>
<li>But perhaps it should</li>
</ul>
<ul class="expandable-list">
<li>When there are more than three</li>
<li>of these list items</li>
<li>the fourth and subsequent will be hidden behind a 'view all' link</li>
<li>It should be possible to include more than one list on a page</li>
<li>The 'view all' link is redundant once clicked and doesn't need to come back</li>
<li>But perhaps it should</li>
</ul>
ul { margin-top: 1em; }
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment