Skip Navigation Website Accessibility
 


Chums Waxed Cotton Retainer

Durable, smooth, and water-resistant, the Waxed Cotton retainer will be your go-to accessory both on and off the river. Made from sleek 2.5mm cotton cord that is dipped in wax to add that extra ounce of functionality and resilience. This retainer is designed to help you keep hold of your chunkiest sunglasses or your thinnest readers with ease. Whether you're navigating rapids, lounging at the beach, or simply enjoying a sunny day, the Waxed Cotton retainer ensures that your eyewear stays secure and accessible, making it an essential part of your outdoor gear.

  • Made from 2.5mm braided waxed cotton
  • Durable, smooth, and water-resistant
  • Fits a wide variety of frames
  • Low-profile Urban ends

(function(){ // Toggle aria-expanded for navbar toggles / dropdowns document.addEventListener('click', function(e){ var btn = e.target.closest('[data-toggle="aria"]'); if(!btn) return; var targetSelector = btn.getAttribute('data-target'); var el = targetSelector ? document.querySelector(targetSelector) : null; var expanded = btn.getAttribute('aria-expanded') === 'true'; btn.setAttribute('aria-expanded', (!expanded).toString()); if(el) el.classList.toggle('open'); }); // Keyboard close for dropdowns/overlays on ESC document.addEventListener('keydown', function(e){ if(e.key === 'Escape'){ document.querySelectorAll('.open').forEach(function(x){ x.classList.remove('open'); }); document.querySelectorAll('[aria-expanded="true"]').forEach(function(b){ b.setAttribute('aria-expanded','false'); }); } }); // Brief product-card animation on add-to-cart (use data-add-btn on button) document.addEventListener('click', function(e){ var add = e.target.closest('[data-add-btn]'); if(!add) return; var card = add.closest('.card'); if(card){ card.classList.remove('fade-added'); void card.offsetWidth; card.classList.add('fade-added'); setTimeout(function(){ card.classList.remove('fade-added'); }, 600); } }); // Lazy image fallback for images with data-src var imgs = Array.prototype.slice.call(document.querySelectorAll('img[data-src]')); if('IntersectionObserver' in window && imgs.length){ var io = new IntersectionObserver(function(entries){ entries.forEach(function(e){ if(e.isIntersecting){ var i = e.target; i.src = i.getAttribute('data-src'); i.onload = function(){ i.classList.add('loaded'); } io.unobserve(i); } }); },{rootMargin:'120px'}); imgs.forEach(function(i){ io.observe(i); }); } else { imgs.forEach(function(i){ i.src = i.getAttribute('data-src'); i.onload = function(){ i.classList.add('loaded'); }}); } })();