// ==UserScript== // @name Wish.com - Price filter // @namespace http://tampermonkey.net/ // @version 1.5 // @description Filtering by max price // @author obscenelysad@gmail.com, Shuunen // @match https://www.wish.com/* // @grant none // @downloadURL none // ==/UserScript== $(document).ready(function() { console.log('wish price filter : init'); // Returns a function, that, as long as it continues to be invoked, will not // be triggered. The function will be called after it stops being called for // N milliseconds. If `immediate` is passed, trigger the function on the // leading edge, instead of the trailing. function debounce(func, wait, immediate) { var timeout; return function() { var context = this, args = arguments; var later = function() { timeout = null; if (!immediate) func.apply(context, args); }; var callNow = immediate && !timeout; clearTimeout(timeout); timeout = setTimeout(later, wait); if (callNow) func.apply(context, args); }; } function showHideProducts() { console.log('wish price filter : showHideProducts'); max_price = parseInt($("#wtc_max_price").val()) || 1000; var items = $(".feed-actual-price"); $.each( items, function() { var priceOk = ($(this).text().replace(/\D/g,'') <= max_price); $(this).parent().parent().parent().parent().toggle(priceOk); }); } if ($("#nav-search").length > 0){ $("#header-left").after('
Max Price:
'); } var showHideProductsDebounced = debounce(showHideProducts, 500); // when window is scrolled window.onscroll = showHideProductsDebounced; // when input value change $("#wtc_max_price").keydown(showHideProductsDebounced); });