360° Rotatable Adjustable Cleaning Mop
360° Rotatable Adjustable Cleaning Mop
360° Rotatable Adjustable Cleaning Mop
360° Rotatable Adjustable Cleaning Mop
360° Rotatable Adjustable Cleaning Mop
360° Rotatable Adjustable Cleaning Mop
360° Rotatable Adjustable Cleaning Mop
360° Rotatable Adjustable Cleaning Mop
360° Rotatable Adjustable Cleaning Mop
360° Rotatable Adjustable Cleaning Mop
360° Rotatable Adjustable Cleaning Mop
360° Rotatable Adjustable Cleaning Mop
360° Rotatable Adjustable Cleaning Mop
360° Rotatable Adjustable Cleaning Mop
3/14
360° Rotatable Adjustable Cleaning Mop
360° Rotatable Adjustable Cleaning Mop
360° Rotatable Adjustable Cleaning Mop
360° Rotatable Adjustable Cleaning Mop
360° Rotatable Adjustable Cleaning Mop
360° Rotatable Adjustable Cleaning Mop
360° Rotatable Adjustable Cleaning Mop
360° Rotatable Adjustable Cleaning Mop
360° Rotatable Adjustable Cleaning Mop
360° Rotatable Adjustable Cleaning Mop
360° Rotatable Adjustable Cleaning Mop
360° Rotatable Adjustable Cleaning Mop
360° Rotatable Adjustable Cleaning Mop
360° Rotatable Adjustable Cleaning Mop
3/14

360° Rotatable Adjustable Cleaning Mop

$29.98
$59.50
Save 50%
Color
Please select a color
Buy More Save More
Please select a buy more save more
Quantity
/** @private {string} */ class SpzCustomAnchorScroll extends SPZ.BaseElement { static deferredMount() { return false; } constructor(element) { super(element); /** @private {Element} */ this.scrollableContainer_ = null; } isLayoutSupported(layout) { return layout == SPZCore.Layout.LOGIC; } buildCallback() { this.viewport_ = this.getViewport(); this.initActions_(); } setTarget(containerId, targetId) { this.containerId = '#' + containerId; this.targetId = '#' + targetId; } scrollToTarget() { const container = document.querySelector(this.containerId); const target = container.querySelector(this.targetId); const {scrollTop} = container; const eleOffsetTop = this.getOffsetTop_(target, container); this.viewport_ .interpolateScrollIntoView_( container, scrollTop, scrollTop + eleOffsetTop ); } initActions_() { this.registerAction( 'scrollToTarget', (invocation) => this.scrollToTarget(invocation?.caller) ); this.registerAction( 'setTarget', (invocation) => this.setTarget(invocation?.args?.containerId, invocation?.args?.targetId) ); } /** * @param {Element} element * @param {Element} container * @return {number} * @private */ getOffsetTop_(element, container) { if (!element./*OK*/ getClientRects().length) { return 0; } const rect = element./*OK*/ getBoundingClientRect(); if (rect.width || rect.height) { return rect.top - container./*OK*/ getBoundingClientRect().top; } return rect.top; } } SPZ.defineElement('spz-custom-anchor-scroll', SpzCustomAnchorScroll); const STRENGTHEN_TRUST_URL = "/api/strengthen_trust/settings"; class SpzCustomStrengthenTrust extends SPZ.BaseElement { constructor(element) { super(element); this.renderElement_ = null; } isLayoutSupported(layout) { return layout == SPZCore.Layout.CONTAINER; } buildCallback() { this.xhr_ = SPZServices.xhrFor(this.win); const renderId = this.element.getAttribute('render-id'); SPZCore.Dom.waitForChild( document.body, () => !!document.getElementById(renderId), () => { this.renderElement_ = SPZCore.Dom.scopedQuerySelector( document.body, `#${renderId}` ); if (this.renderElement_) { this.render_(); } this.registerAction('track', (invocation) => { this.track_(invocation.args); }); } ); } render_() { this.fetchData_().then((data) => { if (!data) { return; } SPZ.whenApiDefined(this.renderElement_).then((apis) => { apis?.render(data); document.querySelector('#strengthen-trust-render-1539149753700').addEventListener('click',(event)=>{ if(event.target.nodeName == 'A'){ this.track_({type: 'trust_content_click'}); } }) }); }); } track_(data = {}) { const track = window.sa && window.sa.track; if (!track) { return; } track('trust_enhancement_event', data); } parseJSON_(string) { let result = {}; try { result = JSON.parse(string); } catch (e) {} return result; } fetchData_() { return this.xhr_ .fetchJson(STRENGTHEN_TRUST_URL) .then((responseData) => { if (!responseData || !responseData.data) { return null; } const data = responseData.data; const moduleSettings = (data.module_settings || []).reduce((result, moduleSetting) => { return result.concat(Object.assign(moduleSetting, { logos: (moduleSetting.logos || []).map((item) => { return moduleSetting.logos_type == 'custom' ? this.parseJSON_(item) : item; }) })); }, []); return Object.assign(data, { module_settings: moduleSettings, isEditor: window.self !== window.top, }); }); } } SPZ.defineElement('spz-custom-strengthen-trust', SpzCustomStrengthenTrust);

Make Cleaning Easier!

No more sloppy buckets, no more bending over endlessly, and no more waiting for the excessive amounts of water to dry when you are done! Our mop will make cleaning your home a breeze

Clean High and Hard to Reach Places!

The Mops extra long pole design allows for you to clean hard to reach places effectively while remaining firmly on the ground

State of the Art Engineering!

The triangle mop head design, allows for our mop to clean every single corner or crevice in your home. Along with the hands free wring out function, Leave no stone un-turned, and no dirt uncleaned!

Absorbs water instantly with the premium micro fiber cloth!

The mop is equipped with thickened microfiber mop cloth, which can quickly absorb water within 5 seconds, firmly locking in messes in seconds. Cloths are machine washable! Make sure to order extra cloths to expedite the cleaning process even more! (Offered when adding the 360 swivel mop™ to cart)