html - how to build a load more <li> function using pure javascript instead of jquery -
i found great code in codepen: http://codepen.io/joe-watkins/pen/wbybgn
but trying have same feature using pure javascript , know if possible, , how achive 😉
thanks lot
var $parent = $("ul"), $items = $parent.find("li"), $loadmorebtn = $("#load-more-comments"), maxitems = 10, hiddenclass = "visually-hidden"; // add visually hidden class items beyond maxitems $.each($items, function(idx,item){ if(idx > maxitems - 1){ $(this).addclass(hiddenclass); } }); // onclick of show more button show more = maxitems // if there none left show kill show more button $loadmorebtn.on("click", function(e){ $("."+hiddenclass).each(function(idx,item){ if(idx < maxitems - 1){ $(this).removeclass(hiddenclass); } // kill button if no more show if($("."+hiddenclass).size() === 0){ $loadmorebtn.hide(); } }); });
body { margin: 1em; } .visually-hidden { position: absolute; overflow: hidden; clip: rect(0 0 0 0); height: 1px; width: 1px; margin: -1px; padding: 0; border: 0; }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <ul> <li class="item">item</li> <li class="item">item</li> <li class="item">item</li> <li class="item">item</li> <li class="item">item</li> <li class="item">item</li> <li class="item">item</li> <li class="item">item</li> <li class="item">item</li> <li class="item">item</li> <li class="item">item</li> <li class="item">item</li> <li class="item">item</li> <li class="item">item</li> <li class="item">item</li> <li class="item">item</li> <li class="item">item</li> <li class="item">item</li> <li class="item">item</li> <li class="item">item</li> <li class="item">item</li> <li class="item">item</li> <li class="item">item</li> <li class="item">item</li> <li class="item">item</li> <li class="item">item</li> <li class="item">item</li> <li class="item">item</li> <li class="item">item</li> <li class="item">item</li> <li class="item">item</li> <li class="item">item</li> <li class="item">item</li> <li class="item">item</li> <li class="item">item</li> <li class="item">item</li> <li class="item">item</li> <li class="item">item</li> <li class="item">item</li> <li class="item">item</li> <li class="item">item</li> <li class="item">item</li> <li class="item">item</li> <li class="item">item</li> <li class="item">item</li> <li class="item">item</li> <li class="item">item</li> <li class="item">item</li> <li class="item">item</li> <li class="item">item</li> <li class="item">item</li> <li class="item">item</li> <li class="item">item</li> <li class="item">item</li> <li class="item">item</li> <li class="item">item</li> <li class="item">item</li> </ul> <button id="load-more-comments">load more</button>
here quick vanilla version of js code provided
// cache vars var parent = document.queryselector('ul'), items = parent.queryselectorall('li'), loadmorebtn = document.queryselector('#load-more-comments'), maxitems = 10, hiddenclass = "visually-hidden"; [].foreach.call(items, function(item, idx){ if (idx > maxitems - 1) { item.classlist.add(hiddenclass); } }); loadmorebtn.addeventlistener('click', function(){ [].foreach.call(document.queryselectorall('.' + hiddenclass), function(item, idx){ console.log(item); if (idx < maxitems - 1) { item.classlist.remove(hiddenclass); } if ( document.queryselectorall('.' + hiddenclass).length === 0) { loadmorebtn.style.display = 'none'; } }); });
codepen plain js:
http://codepen.io/anon/pen/gpxpmn
here thing tho, jquery works out different browsers' inconsistencies things adding event handlers, ajaxing, querying dom , such, that's advantage of using it, if trying write code supports ie ;)
Comments
Post a Comment