Backend for songs.zachdecook.com
* Table of Contents Filter: Don't depend on jQuery
Zach DeCook 2020-05-03
parent 725c1a5 · commit 68f4a41
-rw-r--r--laravel/resources/js/toc-filter.js36
-rw-r--r--laravel/resources/views/welcome.blade.php2
2 files changed, 20 insertions, 18 deletions
diff --git a/laravel/resources/js/toc-filter.js b/laravel/resources/js/toc-filter.js
index 4db7641..f708681 100644
--- a/laravel/resources/js/toc-filter.js
+++ b/laravel/resources/js/toc-filter.js
@@ -1,20 +1,22 @@
-// @license magnet:?xt=urn:btih:b8999bbaf509c08d127678643c515b9ab0836bae&dn=ISC.txt
-$(function(){
- $("#toc-filter").bind("change paste keyup", toc_filter);
-});
+// @license magnet:?xt=urn:btih:b8999bbaf509c08d127678643c515b9ab0836bae&dn=ISC.txt ISC
+function init_toc_filter() {
+ let el = document.getElementById("toc-filter");
+ el.addEventListener("change", toc_filter);
+ el.addEventListener("paste", toc_filter);
+ el.addEventListener("keyup", toc_filter);
+}
-function toc_filter( event )
-{
- var val = $(this).val().toLowerCase();
- $("#toc li").each(function(){
- if($(this).text().toLowerCase().indexOf(val) == -1)
- {
- $(this).hide();
- }
- else
- {
- $(this).show();
- }
- });
+function toc_filter(event) {
+ const val = this.value.toLowerCase();
+ let els = document.querySelectorAll("#toc li");
+ for (let i = 0; i < els.length; i++) {
+ if (els[i].textContent.toLowerCase().indexOf(val) == -1) {
+ els[i].style.display = "none";
+ } else {
+ els[i].style.display = "block";
+ }
+ }
}
+
+init_toc_filter();
// @license-end
diff --git a/laravel/resources/views/welcome.blade.php b/laravel/resources/views/welcome.blade.php
index f241d95..cc0e5d3 100644
--- a/laravel/resources/views/welcome.blade.php
+++ b/laravel/resources/views/welcome.blade.php
@@ -16,6 +16,6 @@
</a>
@endforeach
</ul>
- <script src='js/toc-filter.js'></script>
+ <script src='js/toc-filter.js?nojq' defer></script>
</div>
@endsection