🔥Typared Jiggle Ball for Cat
🔥Typared Jiggle Ball for Cat
🔥Typared Jiggle Ball for Cat
🔥Typared Jiggle Ball for Cat
🔥Typared Jiggle Ball for Cat
🔥Typared Jiggle Ball for Cat
🔥Typared Jiggle Ball for Cat
🔥Typared Jiggle Ball for Cat
🔥Typared Jiggle Ball for Cat
🔥Typared Jiggle Ball for Cat
🔥Typared Jiggle Ball for Cat
🔥Typared Jiggle Ball for Cat
9/12
🔥Typared Jiggle Ball for Cat
🔥Typared Jiggle Ball for Cat
🔥Typared Jiggle Ball for Cat
🔥Typared Jiggle Ball for Cat
🔥Typared Jiggle Ball for Cat
🔥Typared Jiggle Ball for Cat
🔥Typared Jiggle Ball for Cat
🔥Typared Jiggle Ball for Cat
🔥Typared Jiggle Ball for Cat
🔥Typared Jiggle Ball for Cat
🔥Typared Jiggle Ball for Cat
🔥Typared Jiggle Ball for Cat
9/12

🔥Typared Jiggle Ball for Cat

$7.99
$15.37
Save $7.38
color(ball color is random)
Please select a color(ball color is random)
Quantity
Barcode:

Use the Jiggle Balls and Spend quality time with your cat!   

Animated GIF

Features

  • Endless Entertainment: Made with high-quality materials, this toy provides endless entertainment for your cat. Its unique design features a wiggly movement that is sure to stimulate your cat's natural hunting instincts and keep them engaged for hours.
  • Interactive Play: Perfect for interactive play, this toy will quickly become your cat's new favorite. You can use the tail to move the ball around and make it more challenging for your cat to catch.
  • Promotes Exercise: Your cat will love chasing and pouncing on the wiggly ball, which helps to keep them active and engaged.
  • Strengthens Bond: Playing with your cat is a great way to strengthen the bond between you and your furry friend.

Specifications

  • Color: Random
  • Material: Plush
  • Net Weight: 10g
  • Length: 24cm

Package Includes

  • 2/3/6*Jiggle Ball(s) (Optional)
Customer Reviews

Here are what our customers say.

Write a Review
Customer Reviews
Wow you reached the bottom
Newest
Most liked
Highest ratings
Lowest ratings
×
class SpzCustomFileUpload extends SPZ.BaseElement { constructor(element) { super(element); this.uploadCount_ = 0; this.fileList_ = []; } buildCallback() { this.action = SPZServices.actionServiceForDoc(this.element); this.registerAction('upload', (data) => { this.handleFileUpload_(data.event?.detail?.data || []); }); this.registerAction('delete', (data) => { this.handleFileDelete_(data?.args?.data); }); this.registerAction('preview', (data) => { this.handleFilePreview_(data?.args?.data); }); this.registerAction('limit', (data) => { this.handleFileLimit_(); }); this.registerAction('sizeLimit', (data) => { this.handleFileSizeLimit_(); }); } isLayoutSupported(layout) { return layout == SPZCore.Layout.LOGIC; } setData_(count, file) { this.uploadCount_ = count; this.fileList_ = file; } handleFileUpload_(data) { data.forEach(i => { if(this.fileList_.some(j => j.url === i.url)) return; this.fileList_.push(i); }) this.uploadCount_++; sessionStorage.setItem('fileList', JSON.stringify(this.fileList_)); this.triggerEvent_("handleFileUpload", { count: this.uploadCount_, files: this.fileList_}); if(this.fileList_.length >= 5){ document.querySelector('#review_upload').style.display = 'none'; } if(this.fileList_.length > 0){ document.querySelector('.apps-reviews-write-anonymous-box').style.marginTop = '8px'; } } handleFileDelete_(index) { this.fileList_.splice(index, 1); this.uploadCount_--; sessionStorage.setItem('fileList', JSON.stringify(this.fileList_)); this.triggerEvent_("handleFileDelete", { count: this.uploadCount_, files: this.fileList_}); document.querySelector('#review_upload').style.display = 'block'; if(this.fileList_?.length === 0){ document.querySelector('.apps-reviews-write-anonymous-box').style.marginTop = '132px'; } } handleFilePreview_(index) { const finalPreviewData = this.fileList_[index]; const filePreviewModal = document.getElementById('filePreviewModal'); const fullScreenVideo = document.getElementById('fullScreenVideo'); const fullScreenImage = document.getElementById('fullScreenImage'); const previewModalClose = document.getElementById('previewModalClose'); const previewLoading = document.getElementById('previewLoading'); filePreviewModal.style.display = 'block'; previewLoading.style.display = 'flex'; if(finalPreviewData?.type === 'video'){ const media = this.mediaParse_(this.fileList_[index]?.url); fullScreenVideo.addEventListener('canplaythrough', function() { previewLoading.style.display = 'none'; }); fullScreenImage.src = ''; fullScreenImage.style.display = 'none'; fullScreenVideo.style.display = 'block'; fullScreenVideo.src = media.mp4 || ''; } else { fullScreenImage.onload = function() { previewLoading.style.display = 'none'; }; fullScreenVideo.src = ''; fullScreenVideo.style.display = 'none'; fullScreenImage.style.display = 'block'; fullScreenImage.src = finalPreviewData.url; } previewModalClose.addEventListener('click', function() { filePreviewModal.style.display = 'none'; }); } handleFileLimit_() { alert(window.AppReviewsLocale.comment_file_limit || 'please do not upload files more than 5'); this.triggerEvent_("handleFileLimit"); } handleFileSizeLimit_() { alert(window.AppReviewsLocale.comment_file_size_limit || 'File size does not exceed 10M'); } clear(){ this.fileList_ = []; this.uploadCount_ = 0; sessionStorage.setItem('fileList', JSON.stringify(this.fileList_)); this.triggerEvent_("handleClear", { count: this.uploadCount_, files: this.fileList_}); document.querySelector('#review_upload').style.display = 'block'; } mediaParse_(url) { var result = {}; try { url.replace(/[?&]+([^=&]+)=([^&]*)/gi, function (str, key, value) { try { result[key] = decodeURIComponent(value); } catch (e) { result[key] = value; } }); result.preview_image = url.split('?')[0]; } catch (e) {}; return result; } triggerEvent_(name, data) { const event = SPZUtils.Event.create(this.win, name, data); this.action.trigger(this.element, name, event); } } SPZ.defineElement('spz-custom-file-upload', SpzCustomFileUpload);
The review would not show in product details on storefront since it does not support to.