JSFiddle - React, Tailwind, and code Playground
HTML
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas vestibulum quam sit amet quam porta adipiscing. Morbi pharetra sapien eu justo suscipit venenatis. Aenean viverra molestie ullamcorper. In sit amet pellentesque turpis.</p>
<p>Fusce aliquam ornare magna et condimentum. Etiam id pharetra nisl. Fusce scelerisque tellus eget ipsum gravida id blandit mi tempus. Vestibulum posuere ultricies felis in venenatis. In a nisl sit amet sapien accumsan eleifend ac id dui. In bibendum dui posuere metus aliquam eu ultricies purus fermentum. Praesent semper mi id ipsum venenatis nec rutrum risus consequat.</p>
<p>Nulla quis enim nisi, et aliquam orci. Etiam ornare magna in velit tristique in ullamcorper magna blandit. Mauris leo lectus, vulputate eu ullamcorper in, pulvinar at nunc. Praesent sed massa sapien, ac aliquet nisl. Vestibulum aliquet nunc nisl, id pulvinar massa. Vivamus pharetra enim a ante ultrices fringilla.</p>
<p>The Nullam nec ante felis. Suspendisse consequat nibh id tortor condimentum ut iaculis sapien lacinia. Integer volutpat ornare congue. Pellentesque ut elit ipsum. Morbi accumsan, lacus id rhoncus hendrerit, ante nibh tincidunt elit, rhoncus tincidunt nibh velit sit amet leo. Suspendisse in ligula lorem. Sed sit amet sapien vitae ante fringilla sollicitudin non pulvinar augue. Quisque est tortor, pellentesque at auctor et, facilisis eget ligula. Nunc viverra faucibus dictum.</p>
<p>Aliquam tristique, justo pretium gravida consectetur, arcu sem malesuada nisl, nec laoreet libero nisi et augue. Nunc eget nibh ligula, at suscipit ligula. Sed facilisis, arcu et egestas egestas, nunc diam consequat nisl, id semper metus sapien sit amet nunc. Aenean ac placerat tellus. Phasellus sed ipsum est. Aliquam vel est quam, in euismod libero.</p>
<p>Vivamus sollicitudin, dolor ac tincidunt consequat, nulla mauris rutrum tellus, vitae rutrum est est sed massa. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis...
CSS
p { padding-bottom: 1em }
JavaScript
/* get letter from URL */
function getletter(){
var p = (new RegExp("[\\?&]letter=([^&#]*)")).exec(window.location.href);
return (p===null) ? "" : p[1];
}
/* Show paragraph containing first letter (or number if zero) */
function finish(letter){
// get letter from url or set to zero if it doesn't exist
// **************
var letter = getletter() || '0'; // Adjust letter to show here (FOR DEMO)
// **************
var t, txt, found = [];
if (letter.match(/\d/)) { letter = "0"; } // set letter to zero if it is any number
$('p').each(function(){
// grab first 20 characters so we don't need to split the entire paragraph
txt = $(this).text().substr(0,20).split(' ');
// remove first element if it's "the"
if (txt[0].toLowerCase() == 'the') { txt.shift(); }
// set zero for digits or get first letter
t = txt[0].match(/\d/) ? "0" : txt[0].substr(0,1).toLowerCase();
// show paragraph if it matches
if ((found[$(this).text()] != true) && ((t == "0" && letter == "0") || t == letter.substr(0,1).toLowerCase())){
$(this).addClass('current-series').show();
found[$(this).text()] = true;
} else {
// no match, hide paragraph
// **** removeClass needed for demo only ****
$(this).removeClass('current-series').hide();
}
});
}
$(document).ready(function(){
finish();
});