Browse Source

Fix not jumping to results loaded by infinite scroll

Infinite scroll adds a `hr` tag to split up the sections loaded by it.
The vim bindings `j` and `k`, which jump to the next and previous result
respectively, search for a **direct** sibling with the class `result`.
With the `hr` between results a direct sibling cannot be found. To fix
this we remove the restriction of it having to be a direct sibling.
Nick Espig 5 years ago
parent
commit
0ae86cd168
1 changed files with 10 additions and 2 deletions
  1. 10 2
      searx/static/plugins/js/vim_hotkeys.js

+ 10 - 2
searx/static/plugins/js/vim_hotkeys.js

@@ -125,6 +125,14 @@ $(document).ready(function() {
         }
     });
 
+    function nextResult(current, direction) {
+        var next = current[direction]();
+        while (!next.is('.result') && next.length !== 0) {
+            next = next[direction]();
+        }
+        return next
+    }
+
     function highlightResult(which) {
         return function() {
             var current = $('.result[data-vim-selected]');
@@ -157,13 +165,13 @@ $(document).ready(function() {
                         }
                         break;
                     case 'down':
-                        next = current.next('.result');
+                        next = nextResult(current, 'next');
                         if (next.length === 0) {
                             next = $('.result:first');
                         }
                         break;
                     case 'up':
-                        next = current.prev('.result');
+                        next = nextResult(current, 'prev');
                         if (next.length === 0) {
                             next = $('.result:last');
                         }