View Full Version : jquery: view more/ view less text
lauthiamkok
07-19-2009, 03:50 PM
Hi,
How can i do a text extract like this,
http://www.apple.com/trailers/universal/despicableme/
where u can click to view more text and then click view less when u like to...
thanks,
Lau
fside
07-19-2009, 03:57 PM
Hi,
How can i do a text extract like this,
I don't know what you think "text extract" means.
But that's just an 'accordion' function. In addition to jQuery, you might have to load various 'plug-ins' for jQuery, other scripts. Just look at the documentation for those, or maybe ask someone in the Javascript 'Frameworks' board? MooTools should have similar. It's a pretty common effect.
Philip M
07-19-2009, 04:32 PM
Like this:-
<body onload = "toggle()">
<div id = "theText"></div>
<p id = "but1" style="color:red;font-family:Arial; font-size:10pt; position:absolute; right:95px"; onclick = "toggle()">Show More</p>
<script type = "text/javascript">
var tflag = 0;
function toggle() {
var txt = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris blandit erat sed enim convallis tincidunt. Vivamus vestibulum hendrerit blandit. Donec sagittis magna justo. Sed vehicula auctor mauris quis dictum. Aliquam erat volutpat. Phasellus at quam nibh, sed dictum neque. Maecenas lectus arcu, sagittis quis dapibus sed, lobortis id velit. Vestibulum ut tortor neque. Quisque porttitor ornare massa sit amet ornare. Vivamus arcu augue, fringilla in adipiscing eget, viverra sit amet purus. Praesent euismod, velit ac aliquet elementum, velit lectus laoreet magna, vel auctor diam libero non turpis. Fusce eu sapien in enim dapibus iaculis. Cras et molestie orci. Sed nec est elit, eu suscipit quam." + "<br><br>" +
"Phasellus accumsan aliquam quam, vitae fermentum purus pellentesque quis. Aliquam viverra lacus at tortor scelerisque vestibulum eget vitae orci. Etiam volutpat neque non erat facilisis egestas. Duis vulputate lacus eget nulla mattis vulputate. Fusce vehicula libero dolor, vitae tempor nulla. "
if (tflag == 0) { // show first 399 characters
document.getElementById("theText").innerHTML = txt.substring(0,399) + "......";
tflag = 1;
document.getElementById("but1").innerHTML = "Show More";
}
else {
document.getElementById("theText").innerHTML = txt;
document.getElementById("but1").innerHTML = "Show Less";
tflag = 0;
}
}
</script>
"To a young heart everything is fun" - Charles Dickens
lauthiamkok
07-19-2009, 04:39 PM
Like this:-
<body onload = "toggle()">
<div id = "theText"></div>
<p id = "but1" style="color:red; font-family:Arial; font-size:10pt"; onclick = "toggle()">Show More</p>
<script type = "text/javascript">
var tflag = 0;
function toggle() {
var txt = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris blandit erat sed enim convallis tincidunt. Vivamus vestibulum hendrerit blandit. Donec sagittis magna justo. Sed vehicula auctor mauris quis dictum. Aliquam erat volutpat. Phasellus at quam nibh, sed dictum neque. Maecenas lectus arcu, sagittis quis dapibus sed, lobortis id velit. Vestibulum ut tortor neque. Quisque porttitor ornare massa sit amet ornare. Vivamus arcu augue, fringilla in adipiscing eget, viverra sit amet purus. Praesent euismod, velit ac aliquet elementum, velit lectus laoreet magna, vel auctor diam libero non turpis. Fusce eu sapien in enim dapibus iaculis. Cras et molestie orci. Sed nec est elit, eu suscipit quam." + "<br><br>" +
"Phasellus accumsan aliquam quam, vitae fermentum purus pellentesque quis. Aliquam viverra lacus at tortor scelerisque vestibulum eget vitae orci. Etiam volutpat neque non erat facilisis egestas. Duis vulputate lacus eget nulla mattis vulputate. Fusce vehicula libero dolor, vitae tempor nulla. "
if (tflag == 0) { // show first 399 characters
document.getElementById("theText").innerHTML = txt.substring(0,399) + "......";
tflag = 1;
document.getElementById("but1").innerHTML = "Show More";
}
else {
document.getElementById("theText").innerHTML = txt;
document.getElementById("but1").innerHTML = "Show Less";
tflag = 0;
}
}
</script>
"To a young heart everything is fun" - Charles Dickens
thank you... :)
im goin to try to modify it into jquery and with some animation like apple's.
thanks!
lauthiamkok
07-19-2009, 05:11 PM
not able to make the more text slide down...
var tflag = 0;
function toggle()
{
var txt = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris blandit erat sed enim convallis tincidunt. Vivamus vestibulum hendrerit blandit. Donec sagittis magna justo. Sed vehicula auctor mauris quis dictum. Aliquam erat volutpat. Phasellus at quam nibh, sed dictum neque. Maecenas lectus arcu, sagittis quis dapibus sed, lobortis id velit. Vestibulum ut tortor neque. Quisque porttitor ornare massa sit amet ornare. Vivamus arcu augue, fringilla in adipiscing eget, viverra sit amet purus. Praesent euismod, velit ac aliquet elementum, velit lectus laoreet magna, vel auctor diam libero non turpis. Fusce eu sapien in enim dapibus iaculis. Cras et molestie orci. Sed nec est elit, eu suscipit quam." + "<br><br>" +
"Phasellus accumsan aliquam quam, vitae fermentum purus pellentesque quis. Aliquam viverra lacus at tortor scelerisque vestibulum eget vitae orci. Etiam volutpat neque non erat facilisis egestas. Duis vulputate lacus eget nulla mattis vulputate. Fusce vehicula libero dolor, vitae tempor nulla. "
if (tflag == 0) { // show first 399 characters
var text = txt.substring(0,399) + "...";
$('#theText').html(text);
//$('#theText').slideUp();
$('#but1').html('Show More');
tflag = 1;
}
else {
var text1 = txt.substring(0,399);
var text2 = txt.substring(399,10399);
$('#theText').append('<div class="test">'+text2+'<div>');
var text2 = $('.test').css({display:'none'}).slideDown();
$('#theText').html(text1 + text2);
$('#but1').html('Show Less');
tflag = 0;
}
}
does anyone have any ideas...?
thanks
Philip M
07-19-2009, 05:29 PM
That is not what you asked for.
Google for Javascript Accordion Scripts and especially
http://tutorialblog.org/10-javascript-accordion-scripts/
http://www.java2s.com/Code/JavaScript/Ajax-Layer/TextSlideUpandSlideDown.htm
venegal
07-19-2009, 05:32 PM
Just kick out the line
$('#theText').html(text1 + text2);
It's effectively overwriting the slidy thing you put in.
Also, in this line
var text2 = $('.test').css({display:'none'}).slideDown();
if you really want to use a variable, call it something different. text2 is already in use, and that can cause confusion.
But you don't really need a variable there, you can just put it like this:
$('.test').css({display:'none'}).slideDown();
lauthiamkok
07-20-2009, 12:20 AM
i have made it thanks,
http://lauthiamkok.net/tmp/jquery/jquery.more_less_text/
but maybe some code master can write this better than me. here is the entire code,
<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<script type="text/javascript" src="js/jquery-1.3.1.js"></script>
<script type = "text/javascript">
$(document).ready(function(){
var text = $('#content').html();
var extract = text.substring(0,300) + "...";
$('#content').html(extract);
$('#button').html('<a href="#" class="more">Show More</a>');
more(text);
});
this.more = function(text){
$('.more').click(function () {
$('#content').html(text);
$('#content').append('<div class="position"></div>');
position();
$('#button').html('<a href="#" class="less">Show Less</a>');
return false;
});
}
this.position = function(){
var p = $(".position");
var position = p.position();
var pos_top = position.top;
$('#content').animate({height:pos_top+'px'}, function(){
less();
});
}
this.less = function(){
$('.less').click(function () {
$('#content').animate({height:'100px'}, function(){
var text = $('#content').html();
var extract = text.substring(0,300) + "...";
$('#content').html(extract);
$('#button').html('<a href="#" class="more">Show More</a>');
more(text);
});
return false;
});
}
</script>
<style>
div {
clear:both;
}
p {
margin:0px 0px 20px 0px;
clear:both;
}
#content{
height:100px;
width:400px;
overflow:hidden;
border: 1px solid #0000FF;
}
.less{
color:#FF0000;
}
.more{
font-weight:bold;
}
</style>
</head>
<body>
<div id="content">
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris blandit erat sed enim convallis tincidunt. Vivamus vestibulum hendrerit blandit. Donec sagittis magna justo. Sed vehicula auctor mauris quis dictum. Aliquam erat volutpat. Phasellus at quam nibh, sed dictum neque. Maecenas lectus arcu, sagittis quis dapibus sed, lobortis id velit. Vestibulum ut tortor neque. </p>
<p>Phasellus accumsan aliquam quam, vitae fermentum purus pellentesque quis. Aliquam viverra lacus at tortor scelerisque vestibulum eget vitae orci. Etiam volutpat neque non erat facilisis egestas. Duis vulputate lacus eget nulla mattis vulputate. Fusce vehicula libero dolor, vitae tempor nulla. Vestibulum ut tortor neque. Quisque porttitor ornare massa sit amet ornare.</p>
</div>
<div id="button"></div>
</body>
</html>
vBulletin® v3.8.2, Copyright ©2000-2012, Jelsoft Enterprises Ltd.