Free shipping over $40
Personalized Cycling Equipment Electric Bell Horn
Personalized Cycling Equipment Electric Bell Horn
Personalized Cycling Equipment Electric Bell Horn
Personalized Cycling Equipment Electric Bell Horn
Personalized Cycling Equipment Electric Bell Horn
Personalized Cycling Equipment Electric Bell Horn
Personalized Cycling Equipment Electric Bell Horn
Personalized Cycling Equipment Electric Bell Horn
Personalized Cycling Equipment Electric Bell Horn
Personalized Cycling Equipment Electric Bell Horn
Personalized Cycling Equipment Electric Bell Horn
Personalized Cycling Equipment Electric Bell Horn
1 / 12
Personalized Cycling Equipment Electric Bell Horn
Personalized Cycling Equipment Electric Bell Horn
Personalized Cycling Equipment Electric Bell Horn
Personalized Cycling Equipment Electric Bell Horn
Personalized Cycling Equipment Electric Bell Horn
Personalized Cycling Equipment Electric Bell Horn
Personalized Cycling Equipment Electric Bell Horn
Personalized Cycling Equipment Electric Bell Horn
Personalized Cycling Equipment Electric Bell Horn
Personalized Cycling Equipment Electric Bell Horn
Personalized Cycling Equipment Electric Bell Horn
Personalized Cycling Equipment Electric Bell Horn
46% OFF
Save $17.00
Delis666

Personalized Cycling Equipment Electric Bell Horn

$19.99 $36.99
0 sold
Color
Qty

MAIN FEATURES

  • 🚲【Sound can be activated continuously】120dB Electric bike bell with loud sound, short press to activate the sound, or press the button continuously to activate continuously. It is loud enough to alert passersby and improve traffic safety.

  • 🚲【3 Volt-CR2032 button cell】  leakage protection (longer lasting use), can withstand a maximum continuous current of 20mA, so our bike bell can ring continuously. It is measured to last 4000 times of ringing. It can be used for a long time and does not require frequent battery replacement.

  • 🚲【IPX4 Waterproof】Bicycle Small horn has some waterproof performance, you can ride/place it outdoors in the rain without repeated storage, but please do not immerse it in water for a long time.

  • 🚲【Easy to install】1 fixed anti-slip pad, 1 long strap, 1 short strap. The anti-slip pad can effectively prevent the horn from moving on the handlebars, Bicycle bells are suitable for road bikes, mountain bikes, city bikes, sports bikes, cruisers, MTB, BMX, e-bikes, scooter,and other 22.2-32mm diameter bicycle handlebars,Both adults and children can use them.

SPECIFICATIONS

  • Material: ABS+PC

  • Weight: 50G

  • Installation steps:

      Shipping:

      • Free Shipping Over $39.99.

      • Orders will be processed within 7 business days of ordering and shipped out the next day after the processing day. Orders will generally be delivered within 7 to 14 working days.

      Returns:Fast refund for any dissatisfaction within 15 days, 100% money-back guarantee.


      Note:

      • Due to manual measurements, please allow slight measurement deviations.

      • Due to the different display and lighting effects, the actual color of the item may be slightly different from the color displayed on the picture.

      /** @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-1711005325228').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);