{"product_id":"8-pack-shower-caddy-with-2-towel-bars-shower-storage-bathroom-organizer","title":"8 Pack Shower Caddy with 2 Towel Bars, Shower Storage Bathroom Organizer","description":"\u003cdiv id=\"aplus\" class=\"a-section a-spacing-large bucket\"\u003e \u003chr noshade size=\"1\" class=\"bucketDivider\"\u003e\n                                  \u003cstyle\u003e\n    .aplus-v2 .aplus-content-wrapper {\n        position: relative;\n        overflow: hidden;\n    }\n\n    .aplus-v2 .container-with-background-image {\n        width: 100%;\n        height: 100%;\n        background-repeat: no-repeat;\n        background-size: cover;\n    }\n\n    .aplus-v2 .aplus-module-csa-wrapper {\n        display: flow-root;\n    }\n\u003c\/style\u003e\n   \u003cscript type=\"application\/javascript\"\u003e\n    function logShoppableMetrics(moduleName, showsAddToCart) {\n        if (window.ue \u0026amp;\u0026amp; window.ue.count) {\n            window.ue.count(\"aplus:shoppable:\" + moduleName + \":addToCart\", showsAddToCart ? 1 : 0);\n        }\n    }\n\u003c\/script\u003e\n\n                                                  \u003ch2\u003eProduct description\u003c\/h2\u003e   \u003cdiv lang=\"en_US\"\u003e\n    \u003cdiv class=\"aplus-v2 desktop celwidget\" cel_widget_id=\"aplus\"\u003e\n            \u003cscript type=\"application\/javascript\"\u003e\n\n    \/**\n     * Common event handler for click and keydown events.\n     * @param {Event} event - The event object.\n     * @param {Function} handleClickOrEnter - Function to handle click or Enter key events.\n     * @param {Function} handleEsc - Function to handle Esc key events.\n     *\/\n    \/\/ [TODO][AplusMantle-8064] Create common event handler util(key events, click events) in AplusModuleResources\n    function handleClickAndKeyEvents(event, handleClickOrEnterOrSpace) {\n        const ENTER_KEY_CODE = 13;\n        const ESCAPE_KEY_CODE = 27;\n        const SPACE_KEY_CODE = 32;\n        const isClick = event.type === 'click';\n        const isKeydown = event.type === 'keydown';\n        const isEnter = isKeydown \u0026amp;\u0026amp; event.keyCode === ENTER_KEY_CODE;\n        const isSpace = isKeydown \u0026amp;\u0026amp; event.keyCode === SPACE_KEY_CODE;\n        const isEsc = isKeydown \u0026amp;\u0026amp; event.keyCode === ESCAPE_KEY_CODE;\n\n        if (isClick || isEnter || isSpace) {\n            handleClickOrEnterOrSpace();\n        } else if (isEsc) {\n            handleEsc(event);\n        }\n    }\n\n    \/**\n    * Function to handle esc key event.\n    * @param {Event} event - The event object.\n    *\/\n    function handleEsc(event) {\n        event.target.blur()  \/\/ force remove focus\n    }\n\n\u003c\/script\u003e      \u003cdiv class=\"aplus-content-wrapper\"\u003e\n                                   \u003cdiv class=\"aplus-module-csa-wrapper\" data-csa-c-type=\"widget\" data-csa-c-slot-id=\"aplus-module-premium-module-2-fullbackground-image-1\" data-csa-c-content-id=\"amzn1.aplus.71e8a3a5-9069-410d-ac0a-c8a9cbb052bd:1790061617424.6606ec20-b460-4878-9a34-efe45865bce3.en_US\"\u003e\n     \u003cdiv class=\"celwidget aplus-module premium-module-2-fullbackground-image aplus-premium\" cel_widget_id=\"aplus-premium-module-2-fullbackground-image\"\u003e\n                              \u003cdiv class=\"a-section a-spacing-none premium-aplus premium-aplus-module-2\"\u003e                                   \u003cdiv class=\"a-section a-spacing-none premium-background-wrapper\"\u003e  \u003cdiv class=\"a-section a-spacing-none background-image\"\u003e                                       \u003cimg alt=\"8 PACK SHOWER CADDY\" src=\"https:\/\/m.media-amazon.com\/images\/S\/aplus-media-library-service-media\/9495cc32-564b-4813-aa7d-a537ef220171.__CR0,0,1464,600_PT0_SX1464_V1___.jpg\"\u003e  \u003c\/div\u003e   \u003c\/div\u003e \u003cdiv class=\"a-section a-text-center\"\u003e                                  \u003c\/div\u003e \u003c\/div\u003e      \u003c\/div\u003e\n     \u003c\/div\u003e\n                \u003cdiv class=\"aplus-module-csa-wrapper\" data-csa-c-type=\"widget\" data-csa-c-slot-id=\"aplus-module-premium-module-13-carousel-2\" data-csa-c-content-id=\"amzn1.aplus.71e8a3a5-9069-410d-ac0a-c8a9cbb052bd:1790061617424.3c3bde01-3554-4f0d-b367-3fe6e6ad8971.en_US\"\u003e\n     \u003cdiv class=\"celwidget aplus-module premium-module-13-carousel aplus-premium\" cel_widget_id=\"aplus-premium-module-13-carousel\"\u003e\n                                                                           \u003cdiv class=\"a-section a-spacing-none premium-aplus premium-aplus-module-13\"\u003e                                     \u003cdiv class=\"a-section a-spacing-none aplus-carousel-container\"\u003e \u003cdiv id=\"premium-aplus-13-carousel-1-id\" data-a-carousel-options='{\"peek_percentage\":0,\"minimum_gutter_width\":0,\"show_partial_next\":false,\"name\":\"premium-aplus-13-carousel-1\"}' aria-label=\"Featured content carousel\" aria-roledescription=\"carousel\" data-a-display-strategy=\"single\" data-a-transition-strategy=\"slideCircular\" role=\"region\" class=\"a-begin a-carousel-container a-carousel-static a-carousel-display-single a-carousel-transition-slideCircular\"\u003e\n\u003cinput autocomplete=\"on\" type=\"hidden\" class=\"a-carousel-firstvisibleitem\"\u003e  \u003cdiv class=\"a-row a-carousel-controls a-carousel-row a-carousel-has-buttons a-carousel-overlay-buttons a-carousel-rounded-buttons\"\u003e\u003cdiv class=\"a-carousel-row-inner\"\u003e\n\u003cdiv class=\"a-carousel-col a-carousel-left\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"a-carousel-col a-carousel-center\"\u003e\u003cdiv class=\"a-carousel-viewport\" aria-roledescription=\"slide\"\u003e\u003col class=\"a-carousel\" role=\"list\"\u003e     \u003cli aria-roledescription=\"slide\" class=\"a-carousel-card aplus-carousel-element\" aria-setsize=\"5\"\u003e \u003cdiv id=\"premium-aplus-13-carousel-1-slide-0\"\u003e\n                                         \u003cdiv class=\"a-section a-spacing-none aplus-card-image\"\u003e                                           \u003cdiv style=\"aspect-ratio: 1464 \/ 600; line-height: 0;\"\u003e\n                \u003cimg alt=\"HAVY-DUTY SHOWER CADDY\" src=\"https:\/\/m.media-amazon.com\/images\/S\/aplus-media-library-service-media\/f11d833b-2338-4686-8e7f-1d70e327a342.__CR0,0,1464,600_PT0_SX1464_V1___.jpg\"\u003e \u003c\/div\u003e    \u003c\/div\u003e   \u003c\/div\u003e\n                            \u003c\/li\u003e      \u003cli aria-roledescription=\"slide\" class=\"a-carousel-card aplus-carousel-element\" aria-setsize=\"5\"\u003e \u003cdiv id=\"premium-aplus-13-carousel-1-slide-1\"\u003e\n                                         \u003cdiv class=\"a-section a-spacing-none aplus-card-image\"\u003e                                           \u003cdiv style=\"aspect-ratio: 1464 \/ 600; line-height: 0;\"\u003e\n                \u003cimg alt=\"INTIMATE ANTI-TILT DESIGN\" src=\"https:\/\/m.media-amazon.com\/images\/S\/aplus-media-library-service-media\/2e8c7079-67c1-4d18-9408-60bec0a7e559.__CR0,0,1464,600_PT0_SX1464_V1___.jpg\"\u003e \u003c\/div\u003e    \u003c\/div\u003e   \u003c\/div\u003e\n                            \u003c\/li\u003e      \u003cli aria-roledescription=\"slide\" class=\"a-carousel-card aplus-carousel-element\" aria-setsize=\"5\"\u003e \u003cdiv id=\"premium-aplus-13-carousel-1-slide-2\"\u003e\n                                         \u003cdiv class=\"a-section a-spacing-none aplus-card-image\"\u003e                                           \u003cdiv style=\"aspect-ratio: 1464 \/ 600; line-height: 0;\"\u003e\n                \u003cimg alt=\"high quality degradable adhesive\" src=\"https:\/\/m.media-amazon.com\/images\/S\/aplus-media-library-service-media\/28c3ac39-3dd3-495f-9db4-662bd1944f65.__CR0,0,1464,600_PT0_SX1464_V1___.jpg\"\u003e \u003c\/div\u003e    \u003c\/div\u003e   \u003c\/div\u003e\n                            \u003c\/li\u003e      \u003cli aria-roledescription=\"slide\" class=\"a-carousel-card aplus-carousel-element\" aria-setsize=\"5\"\u003e \u003cdiv id=\"premium-aplus-13-carousel-1-slide-3\"\u003e\n                                         \u003cdiv class=\"a-section a-spacing-none aplus-card-image\"\u003e                                           \u003cdiv style=\"aspect-ratio: 1464 \/ 600; line-height: 0;\"\u003e\n                \u003cimg alt=\"2 towel bars\" src=\"https:\/\/m.media-amazon.com\/images\/S\/aplus-media-library-service-media\/7de9439f-ec77-43c1-9c27-39d2194d866d.__CR0,0,1464,600_PT0_SX1464_V1___.jpg\"\u003e \u003c\/div\u003e    \u003c\/div\u003e   \u003c\/div\u003e\n                            \u003c\/li\u003e      \u003cli aria-roledescription=\"slide\" class=\"a-carousel-card aplus-carousel-element\" aria-setsize=\"5\"\u003e \u003cdiv id=\"premium-aplus-13-carousel-1-slide-4\"\u003e\n                                         \u003cdiv class=\"a-section a-spacing-none aplus-card-image\"\u003e                                           \u003cdiv style=\"aspect-ratio: 1464 \/ 600; line-height: 0;\"\u003e\n                \u003cimg alt=\"perfect storage solution\" src=\"https:\/\/m.media-amazon.com\/images\/S\/aplus-media-library-service-media\/4f0c5e79-58fd-4550-82d2-cc06600b7d71.__CR0,0,1464,600_PT0_SX1464_V1___.jpg\"\u003e \u003c\/div\u003e    \u003c\/div\u003e   \u003c\/div\u003e\n                            \u003c\/li\u003e       \u003c\/ol\u003e\u003c\/div\u003e\u003c\/div\u003e\n\u003cdiv class=\"a-carousel-col a-carousel-right\"\u003e\u003c\/div\u003e\n\u003c\/div\u003e\u003c\/div\u003e \u003cspan class=\"a-end aok-hidden\"\u003e\u003c\/span\u003e\n\u003c\/div\u003e \u003cdiv class=\"a-section a-spacing-none aplus-pagination-wrapper\"\u003e      \u003cscript\u003e\n\nP.now(\"premium-aplus-13-carousel-1\").execute(\"init-pagination-carousel\", function(init) {\n    if (init) {\n        return;\n    }\n    P.register(\"premium-aplus-13-carousel-1\", function() {\n        return function() {\n            P.when(\"A\", \"jQuery\", \"a-carousel-framework\", \"ready\").execute(\"paginate-carousel\", function (A, $, framework) {\n                const ENTER_KEY_CODE = 13;\n                const ESCAPE_KEY_CODE = 27;\n                const LEFT_ARROW_KEY = 37;\n                const RIGHT_ARROW_KEY = 39;\n                const HOME_KEY = 36;\n                const END_KEY = 35;\n\n                var moduleId = \"1\";\n                var carouselName = \"premium-aplus-13-carousel-1\";\n                var paginationAction = \"aplus-pagination-dot-action-\" + moduleId + \"-\" + carouselName;\n                var paginationGroup = \"#aplus-pagination-group-\" + moduleId + \"-\" + carouselName;\n\n                \/* If the carousel goes to a new page *\/\n                A.on(\"a:carousel:\"+carouselName+\":change:pageNumber\", function (data) {\n                    A.$(paginationGroup+\" .carousel-slider-circle\").removeClass(\"aplus-carousel-active\").attr('aria-selected', 'false').attr('tabindex', -1)\n                                    .eq(data.newValue - 1).addClass(\"aplus-carousel-active\").attr('aria-selected', 'true').attr('tabindex', 0);\n                });\n\n                function syncPaginationDotsWithCarouselPages(numPages) {\n                    const parentElement = document.querySelector(paginationGroup);\n                    if (parentElement \u0026amp;\u0026amp; parentElement.children) {\n                        const children = parentElement.children;\n                        for (let i = 0; i \u0026lt; children.length; i++) {\n                            if (i \u0026gt;= numPages) {\n                                \/\/ If number of dots \u0026gt; num of pages, we should hide other dots\n                                children[i].classList.add('aplus-pagination-dot--display-none');\n                            } else if (children[i].classList.contains('aplus-pagination-dot--display-none')) {\n                                \/\/ Reset display of dots if it was hidden before\n                                children[i].classList.remove('aplus-pagination-dot--display-none');\n                            }\n                        }\n                    }\n                }\n\n                framework.onInit(carouselName, function (carousel) {\n                    try {\n                        var totalPages = carousel.getAttr('totalPages');\n                        syncPaginationDotsWithCarouselPages(totalPages);\n                        \/* Resize event handler to re-calculate the pagination dots count based on orientation *\/\n                        window.addEventListener('resize', function() {\n                            carousel.resize();\n                            totalPages = carousel.getAttr('totalPages');\n                            syncPaginationDotsWithCarouselPages(totalPages);\n                        });\n\n                        A.declarative(paginationAction, 'click keydown', function(event){\n                            var isClick = event.type === 'click';\n                            var isKeydown = event.type === 'keydown';\n                            var isEnter = isKeydown \u0026amp;\u0026amp; event.$event.keyCode === ENTER_KEY_CODE;\n                            var isEsc = isKeydown \u0026amp;\u0026amp; event.$event.keyCode === ESCAPE_KEY_CODE;\n                            var isLeftArrow = isKeydown \u0026amp;\u0026amp; event.$event.keyCode === LEFT_ARROW_KEY;\n                            var isRightArrow = isKeydown \u0026amp;\u0026amp; event.$event.keyCode === RIGHT_ARROW_KEY;\n                            var isHome = isKeydown \u0026amp;\u0026amp; event.$event.keyCode === HOME_KEY;\n                            var isEnd = isKeydown \u0026amp;\u0026amp; event.$event.keyCode === END_KEY;\n\n                            if (isClick || isEnter) {\n                                var data = event.data;\n                                carousel.gotoPage(data.page);\n                            } else if (isEsc) {\n                                event.$target.blur();\n                            } else if (isLeftArrow || isRightArrow || isHome || isEnd) {\n                                event.$event.preventDefault();\n                                const dots = A.$(paginationGroup + \" .carousel-slider-circle\");\n                                const currentIndex = dots.index(event.$target);\n                                let nextIndex;\n\n                                if (isLeftArrow) {\n                                    nextIndex = currentIndex \u0026gt; 0 ? currentIndex - 1 : dots.length - 1;\n                                } else if (isRightArrow) {\n                                    nextIndex = currentIndex \u0026lt; dots.length - 1 ? currentIndex + 1 : 0;\n                                } else if (isHome) {\n                                    nextIndex = 0;\n                                } else if (isEnd) {\n                                    nextIndex = dots.length - 1;\n                                }\n\n                                dots.eq(nextIndex).focus();\n                                carousel.gotoPage(nextIndex + 1);\n                            }\n                        });\n                    } catch (e) {\n                        P.log('Failed to init ' + carouselName + '. Error: ' + e.message, 'FATAL', 'AplusModuleResources');\n                    }\n                });\n            });\n        }\n    });\n});\n\u003c\/script\u003e\n     \u003cdiv class=\"aplus-mantle aplus-module\"\u003e\n        \u003cdiv class=\"aplus-carousel-nav\"\u003e\n            \u003cul id=\"aplus-pagination-group-1-premium-aplus-13-carousel-1\" class=\"aplus-pagination-dots\" aria-label=\"tablist-section\" role=\"tablist\"\u003e\n                  \u003cli class=\"aplus-pagination-dot\"\u003e\n                        \u003cspan class=\"a-declarative carousel-slider-circle aplus-display-inline-block aplus-carousel-active\" aria-selected=\"true\" data-action=\"aplus-pagination-dot-action-1-premium-aplus-13-carousel-1\" data-aplus-pagination-dot-action-1-premium-aplus-13-carousel-1='{\"page\": 1}' aria-label=\"slide-1\" aria-controls=\"premium-aplus-13-carousel-1-slide-0\" tabindex=\"0\" role=\"tab\"\u003e\u003c\/span\u003e\n                    \u003c\/li\u003e\n                  \u003cli class=\"aplus-pagination-dot\"\u003e\n                        \u003cspan class=\"a-declarative carousel-slider-circle aplus-display-inline-block \" aria-selected=\"false\" data-action=\"aplus-pagination-dot-action-1-premium-aplus-13-carousel-1\" data-aplus-pagination-dot-action-1-premium-aplus-13-carousel-1='{\"page\": 2}' aria-label=\"slide-2\" aria-controls=\"premium-aplus-13-carousel-1-slide-1\" tabindex=\"-1\" role=\"tab\"\u003e\u003c\/span\u003e\n                    \u003c\/li\u003e\n                  \u003cli class=\"aplus-pagination-dot\"\u003e\n                        \u003cspan class=\"a-declarative carousel-slider-circle aplus-display-inline-block \" aria-selected=\"false\" data-action=\"aplus-pagination-dot-action-1-premium-aplus-13-carousel-1\" data-aplus-pagination-dot-action-1-premium-aplus-13-carousel-1='{\"page\": 3}' aria-label=\"slide-3\" aria-controls=\"premium-aplus-13-carousel-1-slide-2\" tabindex=\"-1\" role=\"tab\"\u003e\u003c\/span\u003e\n                    \u003c\/li\u003e\n                  \u003cli class=\"aplus-pagination-dot\"\u003e\n                        \u003cspan class=\"a-declarative carousel-slider-circle aplus-display-inline-block \" aria-selected=\"false\" data-action=\"aplus-pagination-dot-action-1-premium-aplus-13-carousel-1\" data-aplus-pagination-dot-action-1-premium-aplus-13-carousel-1='{\"page\": 4}' aria-label=\"slide-4\" aria-controls=\"premium-aplus-13-carousel-1-slide-3\" tabindex=\"-1\" role=\"tab\"\u003e\u003c\/span\u003e\n                    \u003c\/li\u003e\n                  \u003cli class=\"aplus-pagination-dot\"\u003e\n                        \u003cspan class=\"a-declarative carousel-slider-circle aplus-display-inline-block \" aria-selected=\"false\" data-action=\"aplus-pagination-dot-action-1-premium-aplus-13-carousel-1\" data-aplus-pagination-dot-action-1-premium-aplus-13-carousel-1='{\"page\": 5}' aria-label=\"slide-5\" aria-controls=\"premium-aplus-13-carousel-1-slide-4\" tabindex=\"-1\" role=\"tab\"\u003e\u003c\/span\u003e\n                    \u003c\/li\u003e\n                 \u003c\/ul\u003e\n        \u003c\/div\u003e\n    \u003c\/div\u003e\n \u003c\/div\u003e \u003c\/div\u003e \u003cdiv class=\"a-section a-text-center\"\u003e                                  \u003c\/div\u003e \u003c\/div\u003e  \u003c\/div\u003e\n     \u003c\/div\u003e\n                \u003cdiv class=\"aplus-module-csa-wrapper\" data-csa-c-type=\"widget\" data-csa-c-slot-id=\"aplus-module-premium-module-13-carousel-3\" data-csa-c-content-id=\"amzn1.aplus.71e8a3a5-9069-410d-ac0a-c8a9cbb052bd:1790061617424.571a81ca-d525-4916-9244-bd1f5211a7bc.en_US\"\u003e\n     \u003cdiv class=\"celwidget aplus-module premium-module-13-carousel aplus-premium\" cel_widget_id=\"aplus-premium-module-13-carousel\"\u003e\n                                                                     \u003cdiv class=\"a-section a-spacing-none premium-aplus premium-aplus-module-13\"\u003e                                     \u003cdiv class=\"a-section a-spacing-none aplus-carousel-container\"\u003e \u003cdiv id=\"premium-aplus-13-carousel-2-id\" data-a-carousel-options='{\"peek_percentage\":0,\"minimum_gutter_width\":0,\"show_partial_next\":false,\"name\":\"premium-aplus-13-carousel-2\"}' aria-label=\"Featured content carousel\" aria-roledescription=\"carousel\" data-a-display-strategy=\"single\" data-a-transition-strategy=\"slideCircular\" role=\"region\" class=\"a-begin a-carousel-container a-carousel-static a-carousel-display-single a-carousel-transition-slideCircular\"\u003e\n\u003cinput autocomplete=\"on\" type=\"hidden\" class=\"a-carousel-firstvisibleitem\"\u003e  \u003cdiv class=\"a-row a-carousel-controls a-carousel-row a-carousel-has-buttons a-carousel-overlay-buttons a-carousel-rounded-buttons\"\u003e\u003cdiv class=\"a-carousel-row-inner\"\u003e\n\u003cdiv class=\"a-carousel-col a-carousel-left\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"a-carousel-col a-carousel-center\"\u003e\u003cdiv class=\"a-carousel-viewport\" aria-roledescription=\"slide\"\u003e\u003col class=\"a-carousel\" role=\"list\"\u003e     \u003cli aria-roledescription=\"slide\" class=\"a-carousel-card aplus-carousel-element\" aria-setsize=\"2\"\u003e \u003cdiv id=\"premium-aplus-13-carousel-2-slide-0\"\u003e\n                                         \u003cdiv class=\"a-section a-spacing-none aplus-card-image\"\u003e                                           \u003cdiv style=\"aspect-ratio: 1464 \/ 600; line-height: 0;\"\u003e\n                \u003cimg alt=\"4 Steps Installation and Widely Applicable to Wall Surfaces\" src=\"https:\/\/m.media-amazon.com\/images\/S\/aplus-media-library-service-media\/05dcc085-1064-4ac8-b89f-26dd79a1660f.__CR0,0,1464,600_PT0_SX1464_V1___.jpg\"\u003e \u003c\/div\u003e    \u003c\/div\u003e   \u003c\/div\u003e\n                            \u003c\/li\u003e      \u003cli aria-roledescription=\"slide\" class=\"a-carousel-card aplus-carousel-element\" aria-setsize=\"2\"\u003e \u003cdiv id=\"premium-aplus-13-carousel-2-slide-1\"\u003e\n                                         \u003cdiv class=\"a-section a-spacing-none aplus-card-image\"\u003e                                           \u003cdiv style=\"aspect-ratio: 1464 \/ 600; line-height: 0;\"\u003e\n                \u003cimg alt=\"No Drilling\" src=\"https:\/\/m.media-amazon.com\/images\/S\/aplus-media-library-service-media\/391ea828-26c9-4b48-8b75-4f19d82c3c4d.__CR0,0,1464,600_PT0_SX1464_V1___.jpg\"\u003e \u003c\/div\u003e    \u003c\/div\u003e   \u003c\/div\u003e\n                            \u003c\/li\u003e                   \u003c\/ol\u003e\u003c\/div\u003e\u003c\/div\u003e\n\u003cdiv class=\"a-carousel-col a-carousel-right\"\u003e\u003c\/div\u003e\n\u003c\/div\u003e\u003c\/div\u003e \u003cspan class=\"a-end aok-hidden\"\u003e\u003c\/span\u003e\n\u003c\/div\u003e \u003cdiv class=\"a-section a-spacing-none aplus-pagination-wrapper\"\u003e      \u003cscript\u003e\n\nP.now(\"premium-aplus-13-carousel-2\").execute(\"init-pagination-carousel\", function(init) {\n    if (init) {\n        return;\n    }\n    P.register(\"premium-aplus-13-carousel-2\", function() {\n        return function() {\n            P.when(\"A\", \"jQuery\", \"a-carousel-framework\", \"ready\").execute(\"paginate-carousel\", function (A, $, framework) {\n                const ENTER_KEY_CODE = 13;\n                const ESCAPE_KEY_CODE = 27;\n                const LEFT_ARROW_KEY = 37;\n                const RIGHT_ARROW_KEY = 39;\n                const HOME_KEY = 36;\n                const END_KEY = 35;\n\n                var moduleId = \"2\";\n                var carouselName = \"premium-aplus-13-carousel-2\";\n                var paginationAction = \"aplus-pagination-dot-action-\" + moduleId + \"-\" + carouselName;\n                var paginationGroup = \"#aplus-pagination-group-\" + moduleId + \"-\" + carouselName;\n\n                \/* If the carousel goes to a new page *\/\n                A.on(\"a:carousel:\"+carouselName+\":change:pageNumber\", function (data) {\n                    A.$(paginationGroup+\" .carousel-slider-circle\").removeClass(\"aplus-carousel-active\").attr('aria-selected', 'false').attr('tabindex', -1)\n                                    .eq(data.newValue - 1).addClass(\"aplus-carousel-active\").attr('aria-selected', 'true').attr('tabindex', 0);\n                });\n\n                function syncPaginationDotsWithCarouselPages(numPages) {\n                    const parentElement = document.querySelector(paginationGroup);\n                    if (parentElement \u0026amp;\u0026amp; parentElement.children) {\n                        const children = parentElement.children;\n                        for (let i = 0; i \u0026lt; children.length; i++) {\n                            if (i \u0026gt;= numPages) {\n                                \/\/ If number of dots \u0026gt; num of pages, we should hide other dots\n                                children[i].classList.add('aplus-pagination-dot--display-none');\n                            } else if (children[i].classList.contains('aplus-pagination-dot--display-none')) {\n                                \/\/ Reset display of dots if it was hidden before\n                                children[i].classList.remove('aplus-pagination-dot--display-none');\n                            }\n                        }\n                    }\n                }\n\n                framework.onInit(carouselName, function (carousel) {\n                    try {\n                        var totalPages = carousel.getAttr('totalPages');\n                        syncPaginationDotsWithCarouselPages(totalPages);\n                        \/* Resize event handler to re-calculate the pagination dots count based on orientation *\/\n                        window.addEventListener('resize', function() {\n                            carousel.resize();\n                            totalPages = carousel.getAttr('totalPages');\n                            syncPaginationDotsWithCarouselPages(totalPages);\n                        });\n\n                        A.declarative(paginationAction, 'click keydown', function(event){\n                            var isClick = event.type === 'click';\n                            var isKeydown = event.type === 'keydown';\n                            var isEnter = isKeydown \u0026amp;\u0026amp; event.$event.keyCode === ENTER_KEY_CODE;\n                            var isEsc = isKeydown \u0026amp;\u0026amp; event.$event.keyCode === ESCAPE_KEY_CODE;\n                            var isLeftArrow = isKeydown \u0026amp;\u0026amp; event.$event.keyCode === LEFT_ARROW_KEY;\n                            var isRightArrow = isKeydown \u0026amp;\u0026amp; event.$event.keyCode === RIGHT_ARROW_KEY;\n                            var isHome = isKeydown \u0026amp;\u0026amp; event.$event.keyCode === HOME_KEY;\n                            var isEnd = isKeydown \u0026amp;\u0026amp; event.$event.keyCode === END_KEY;\n\n                            if (isClick || isEnter) {\n                                var data = event.data;\n                                carousel.gotoPage(data.page);\n                            } else if (isEsc) {\n                                event.$target.blur();\n                            } else if (isLeftArrow || isRightArrow || isHome || isEnd) {\n                                event.$event.preventDefault();\n                                const dots = A.$(paginationGroup + \" .carousel-slider-circle\");\n                                const currentIndex = dots.index(event.$target);\n                                let nextIndex;\n\n                                if (isLeftArrow) {\n                                    nextIndex = currentIndex \u0026gt; 0 ? currentIndex - 1 : dots.length - 1;\n                                } else if (isRightArrow) {\n                                    nextIndex = currentIndex \u0026lt; dots.length - 1 ? currentIndex + 1 : 0;\n                                } else if (isHome) {\n                                    nextIndex = 0;\n                                } else if (isEnd) {\n                                    nextIndex = dots.length - 1;\n                                }\n\n                                dots.eq(nextIndex).focus();\n                                carousel.gotoPage(nextIndex + 1);\n                            }\n                        });\n                    } catch (e) {\n                        P.log('Failed to init ' + carouselName + '. Error: ' + e.message, 'FATAL', 'AplusModuleResources');\n                    }\n                });\n            });\n        }\n    });\n});\n\u003c\/script\u003e\n     \u003cdiv class=\"aplus-mantle aplus-module\"\u003e\n        \u003cdiv class=\"aplus-carousel-nav\"\u003e\n            \u003cul id=\"aplus-pagination-group-2-premium-aplus-13-carousel-2\" class=\"aplus-pagination-dots\" aria-label=\"tablist-section\" role=\"tablist\"\u003e\n                  \u003cli class=\"aplus-pagination-dot\"\u003e\n                        \u003cspan class=\"a-declarative carousel-slider-circle aplus-display-inline-block aplus-carousel-active\" aria-selected=\"true\" data-action=\"aplus-pagination-dot-action-2-premium-aplus-13-carousel-2\" data-aplus-pagination-dot-action-2-premium-aplus-13-carousel-2='{\"page\": 1}' aria-label=\"slide-1\" aria-controls=\"premium-aplus-13-carousel-2-slide-0\" tabindex=\"0\" role=\"tab\"\u003e\u003c\/span\u003e\n                    \u003c\/li\u003e\n                  \u003cli class=\"aplus-pagination-dot\"\u003e\n                        \u003cspan class=\"a-declarative carousel-slider-circle aplus-display-inline-block \" aria-selected=\"false\" data-action=\"aplus-pagination-dot-action-2-premium-aplus-13-carousel-2\" data-aplus-pagination-dot-action-2-premium-aplus-13-carousel-2='{\"page\": 2}' aria-label=\"slide-2\" aria-controls=\"premium-aplus-13-carousel-2-slide-1\" tabindex=\"-1\" role=\"tab\"\u003e\u003c\/span\u003e\n                    \u003c\/li\u003e\n                 \u003c\/ul\u003e\n        \u003c\/div\u003e\n    \u003c\/div\u003e\n \u003c\/div\u003e \u003c\/div\u003e \u003cdiv class=\"a-section a-text-center\"\u003e                                  \u003c\/div\u003e \u003c\/div\u003e  \u003c\/div\u003e\n     \u003c\/div\u003e\n                \u003cdiv class=\"aplus-module-csa-wrapper\" data-csa-c-type=\"widget\" data-csa-c-slot-id=\"aplus-module-premium-module-2-fullbackground-image-4\" data-csa-c-content-id=\"amzn1.aplus.71e8a3a5-9069-410d-ac0a-c8a9cbb052bd:1790061617424.dd4fc57f-1d6c-4a3f-81d1-67f136a2a332.en_US\"\u003e\n     \u003cdiv class=\"celwidget aplus-module premium-module-2-fullbackground-image aplus-premium\" cel_widget_id=\"aplus-premium-module-2-fullbackground-image\"\u003e\n                              \u003cdiv class=\"a-section a-spacing-none premium-aplus premium-aplus-module-2\"\u003e                                   \u003cdiv class=\"a-section a-spacing-none premium-background-wrapper\"\u003e  \u003cdiv class=\"a-section a-spacing-none background-image\"\u003e                                       \u003cimg alt=\"Supports up to 50 lbs\" src=\"https:\/\/m.media-amazon.com\/images\/S\/aplus-media-library-service-media\/48071d87-5b98-4f35-8cf3-1597cd7408bd.__CR0,0,1464,600_PT0_SX1464_V1___.jpg\"\u003e  \u003c\/div\u003e   \u003c\/div\u003e \u003cdiv class=\"a-section a-text-center\"\u003e                                  \u003c\/div\u003e \u003c\/div\u003e      \u003c\/div\u003e\n     \u003c\/div\u003e\n                \u003cdiv class=\"aplus-module-csa-wrapper\" data-csa-c-type=\"widget\" data-csa-c-slot-id=\"aplus-module-premium-module-12-nav-carousel-5\" data-csa-c-content-id=\"amzn1.aplus.71e8a3a5-9069-410d-ac0a-c8a9cbb052bd:1790061617424.57bf51ce-8460-4aa0-b6e2-1ba800db8bae.en_US\"\u003e\n     \u003cdiv class=\"celwidget aplus-module premium-module-12-nav-carousel aplus-premium\" cel_widget_id=\"aplus-premium-module-12-nav-carousel\"\u003e\n                                                                 \u003cdiv class=\"a-section a-spacing-none premium-aplus premium-aplus-module-12 premium-aplus-module-12--top-nav\"\u003e \u003cdiv data-module-id=\"4\" class=\"a-section a-spacing-none aplus-carousel-container\"\u003e \u003cdiv id=\"premium-aplus-12-carousel-4-id\" data-a-carousel-options='{\"peek_percentage\":0,\"minimum_gutter_width\":0,\"show_partial_next\":false,\"name\":\"premium-aplus-12-carousel-4\"}' aria-label=\"Featured content carousel\" aria-roledescription=\"carousel\" data-a-display-strategy=\"single\" data-a-transition-strategy=\"slideCircular\" role=\"region\" class=\"a-begin a-carousel-container a-carousel-static a-carousel-display-single a-carousel-transition-slideCircular aplus-image-carousel-container\"\u003e\n\u003cinput autocomplete=\"on\" type=\"hidden\" class=\"a-carousel-firstvisibleitem\"\u003e  \u003cdiv class=\"a-row a-carousel-controls a-carousel-row a-carousel-has-buttons a-carousel-overlay-buttons a-carousel-rounded-buttons\"\u003e\u003cdiv class=\"a-carousel-row-inner\"\u003e\n\u003cdiv class=\"a-carousel-col a-carousel-left\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"a-carousel-col a-carousel-center\"\u003e\u003cdiv class=\"a-carousel-viewport\" aria-roledescription=\"slide\"\u003e\u003col class=\"a-carousel\" role=\"list\"\u003e      \u003cli aria-roledescription=\"slide\" class=\"a-carousel-card aplus-carousel-card\" aria-setsize=\"3\"\u003e \u003cdiv class=\"a-section a-spacing-none aplus-card-image\"\u003e                                       \u003cimg alt=\"Thicker \u0026amp;amp;amp; Durable\" src=\"https:\/\/m.media-amazon.com\/images\/S\/aplus-media-library-service-media\/5091a5bf-702c-4f66-9c7a-3452119bccd9.__CR0,0,1464,600_PT0_SX1464_V1___.jpg\"\u003e  \u003c\/div\u003e      \u003c\/li\u003e      \u003cli aria-roledescription=\"slide\" class=\"a-carousel-card aplus-carousel-card\" aria-setsize=\"3\"\u003e \u003cdiv class=\"a-section a-spacing-none aplus-card-image\"\u003e                                       \u003cimg alt=\"Hollow Drainage Design\" src=\"https:\/\/m.media-amazon.com\/images\/S\/aplus-media-library-service-media\/ceef031f-3a67-45aa-abd7-51074dad4828.__CR0,0,1464,600_PT0_SX1464_V1___.jpg\"\u003e  \u003c\/div\u003e      \u003c\/li\u003e      \u003cli aria-roledescription=\"slide\" class=\"a-carousel-card aplus-carousel-card\" aria-setsize=\"3\"\u003e \u003cdiv class=\"a-section a-spacing-none aplus-card-image\"\u003e                                       \u003cimg alt=\"hooks design\" src=\"https:\/\/m.media-amazon.com\/images\/S\/aplus-media-library-service-media\/13144669-29fb-4b13-bde6-8c7be2b26c9f.__CR0,0,1464,600_PT0_SX1464_V1___.jpg\"\u003e  \u003c\/div\u003e      \u003c\/li\u003e           \u003c\/ol\u003e\u003c\/div\u003e\u003c\/div\u003e\n\u003cdiv class=\"a-carousel-col a-carousel-right\"\u003e\u003c\/div\u003e\n\u003c\/div\u003e\u003c\/div\u003e \u003cspan class=\"a-end aok-hidden\"\u003e\u003c\/span\u003e\n\u003c\/div\u003e  \u003cdiv id=\"aplus-carousel-actions-4\" aria-label=\"tablist section\" class=\"a-section aplus-carousel-actions\" role=\"tablist\"\u003e      \u003cbutton class=\"aplus-goto-btn aplus-goto-btn-4 aplus-active\" role=\"tab\" tabindex=\"0\" aria-selected=\"true\"\u003e\n                            \u003cspan class=\"aplus-carousel-index\"\u003e1\u003c\/span\u003e \u003cspan class=\"aplus-accent2 aplus-carousel-label\"\u003eThicker \u0026amp; Durable\u003c\/span\u003e \u003c\/button\u003e\n                          \u003cbutton class=\"aplus-goto-btn aplus-goto-btn-4 \" role=\"tab\" tabindex=\"0\" aria-selected=\"false\"\u003e\n                            \u003cspan class=\"aplus-carousel-index\"\u003e2\u003c\/span\u003e \u003cspan class=\"aplus-accent2 aplus-carousel-label\"\u003eWaterproof \u0026amp; Rustproof\u003c\/span\u003e \u003c\/button\u003e\n                          \u003cbutton class=\"aplus-goto-btn aplus-goto-btn-4 \" role=\"tab\" tabindex=\"0\" aria-selected=\"false\"\u003e\n                            \u003cspan class=\"aplus-carousel-index\"\u003e3\u003c\/span\u003e \u003cspan class=\"aplus-accent2 aplus-carousel-label\"\u003eHooks Design\u003c\/span\u003e \u003c\/button\u003e\n                                \u003c\/div\u003e \u003c\/div\u003e \u003c\/div\u003e  \u003c\/div\u003e\n     \u003c\/div\u003e\n                \u003cdiv class=\"aplus-module-csa-wrapper\" data-csa-c-type=\"widget\" data-csa-c-slot-id=\"aplus-module-premium-module-2-fullbackground-image-6\" data-csa-c-content-id=\"amzn1.aplus.71e8a3a5-9069-410d-ac0a-c8a9cbb052bd:1790061617424.ad9e4bac-9100-49dd-a296-a4a0993c9207.en_US\"\u003e\n     \u003cdiv class=\"celwidget aplus-module premium-module-2-fullbackground-image aplus-premium\" cel_widget_id=\"aplus-premium-module-2-fullbackground-image\"\u003e\n                              \u003cdiv class=\"a-section a-spacing-none premium-aplus premium-aplus-module-2\"\u003e                                   \u003cdiv class=\"a-section a-spacing-none premium-background-wrapper\"\u003e  \u003cdiv class=\"a-section a-spacing-none background-image\"\u003e                                       \u003cimg alt=\"STORAGE SYSTEM\" src=\"https:\/\/m.media-amazon.com\/images\/S\/aplus-media-library-service-media\/283c176d-58a4-4956-afbb-8509c25f3820.__CR0,0,1464,600_PT0_SX1464_V1___.jpg\"\u003e  \u003c\/div\u003e   \u003c\/div\u003e \u003cdiv class=\"a-section a-text-center\"\u003e                                  \u003c\/div\u003e \u003c\/div\u003e      \u003c\/div\u003e\n     \u003c\/div\u003e\n                \u003cdiv class=\"aplus-module-csa-wrapper\" data-csa-c-type=\"widget\" data-csa-c-slot-id=\"aplus-module-premium-module-11-faq-7\" data-csa-c-content-id=\"amzn1.aplus.71e8a3a5-9069-410d-ac0a-c8a9cbb052bd:1790061617424.65418c85-d230-4740-ae92-e2e9eaa6963a.en_US\"\u003e\n     \u003cdiv class=\"celwidget aplus-module premium-module-11-faq aplus-premium\" cel_widget_id=\"aplus-premium-module-11-faq\"\u003e\n                                                                                                             \u003cdiv class=\"a-section a-spacing-none premium-aplus premium-aplus-module-11\"\u003e \u003cdiv data-faq-block=\"6\" class=\"a-section a-spacing-none aplus-container-2 faqs-container 6\"\u003e  \u003cul class=\"faq-list\"\u003e\n                    \u003cli id=\"faq-qa-pair-0\" class=\"faq-block\"\u003e\n                            \u003ch3\u003e\n                                \u003cspan data-faq-question=\"\" role=\"button\" tabindex=\"0\" aria-controls=\"faq-0\" aria-expanded=\"false\"\u003e\n                                                                      \u003cp class=\"aplus-question aplus-p1\"\u003e What comes with this 8-piece shower caddy set? \u003c\/p\u003e    \u003cspan class=\"faq-arrow\" aria-label=\"\"\u003e\u003c\/span\u003e\n                                \u003c\/span\u003e  \n                            \u003c\/h3\u003e\n                                                              \u003cp class=\"aplus-answer aplus-p2\"\u003e The complete set includes 2 large shower caddies, 1 medium shower shelf, 2 soap holders, 1 toothbrush holder, and 2 towel bars. It creates dedicated storage for shampoo, body wash, soap, toothbrushes, razors, towels, washcloths. \u003c\/p\u003e    \u003c\/li\u003e\n                         \u003cli id=\"faq-qa-pair-1\" class=\"faq-block\"\u003e\n                            \u003ch3\u003e\n                                \u003cspan data-faq-question=\"\" role=\"button\" tabindex=\"0\" aria-controls=\"faq-1\" aria-expanded=\"false\"\u003e\n                                                                      \u003cp class=\"aplus-question aplus-p1\"\u003e Is this a good no-drill shower caddy for renters or apartments? \u003c\/p\u003e    \u003cspan class=\"faq-arrow\" aria-label=\"\"\u003e\u003c\/span\u003e\n                                \u003c\/span\u003e  \n                            \u003c\/h3\u003e\n                                                              \u003cp class=\"aplus-answer aplus-p2\"\u003e Yes. The adhesive mounting system provides bathroom wall storage without drilling permanent holes, making it a practical option for renters, apartments, dorm rooms, and other spaces where drilling may not be preferred. \u003c\/p\u003e    \u003c\/li\u003e\n                         \u003cli id=\"faq-qa-pair-2\" class=\"faq-block\"\u003e\n                            \u003ch3\u003e\n                                \u003cspan data-faq-question=\"\" role=\"button\" tabindex=\"0\" aria-controls=\"faq-2\" aria-expanded=\"false\"\u003e\n                                                                      \u003cp class=\"aplus-question aplus-p1\"\u003e Can these shower shelves be used inside the shower? \u003c\/p\u003e    \u003cspan class=\"faq-arrow\" aria-label=\"\"\u003e\u003c\/span\u003e\n                                \u003c\/span\u003e  \n                            \u003c\/h3\u003e\n                                                              \u003cp class=\"aplus-answer aplus-p2\"\u003e Yes. The coated stainless steel shelves are designed for humid bathroom and shower environments. Their open-grid construction allows water to drain quickly and promotes airflow for faster drying. \u003c\/p\u003e    \u003c\/li\u003e\n                         \u003cli id=\"faq-qa-pair-3\" class=\"faq-block\"\u003e\n                            \u003ch3\u003e\n                                \u003cspan data-faq-question=\"\" role=\"button\" tabindex=\"0\" aria-controls=\"faq-3\" aria-expanded=\"false\"\u003e\n                                                                      \u003cp class=\"aplus-question aplus-p1\"\u003e How much weight can the shower caddy hold? \u003c\/p\u003e    \u003cspan class=\"faq-arrow\" aria-label=\"\"\u003e\u003c\/span\u003e\n                                \u003c\/span\u003e  \n                            \u003c\/h3\u003e\n                                                              \u003cp class=\"aplus-answer aplus-p2\"\u003e Each properly installed shelf supports up to 50 lb when properly installed on a suitable smooth, non-porous surface. Correct surface preparation and installation are important for a secure, long-lasting hold. \u003c\/p\u003e    \u003c\/li\u003e\n                         \u003cli id=\"faq-qa-pair-4\" class=\"faq-block\"\u003e\n                            \u003ch3\u003e\n                                \u003cspan data-faq-question=\"\" role=\"button\" tabindex=\"0\" aria-controls=\"faq-4\" aria-expanded=\"false\"\u003e\n                                                                      \u003cp class=\"aplus-question aplus-p1\"\u003e Does this shower caddy have towel bars? \u003c\/p\u003e    \u003cspan class=\"faq-arrow\" aria-label=\"\"\u003e\u003c\/span\u003e\n                                \u003c\/span\u003e  \n                            \u003c\/h3\u003e\n                                                              \u003cp class=\"aplus-answer aplus-p2\"\u003e Yes. Two separate towel bars are included for hand towels, washcloths, and loofahs. This gives you extra hanging storage in addition to the three main shower shelves. \u003c\/p\u003e    \u003c\/li\u003e\n                      \u003c\/ul\u003e\n        \u003c\/div\u003e \u003c\/div\u003e  \u003c\/div\u003e\n     \u003c\/div\u003e\n         \u003c\/div\u003e\n    \u003c\/div\u003e\n\u003c\/div\u003e    \u003c\/div\u003e                                 ","brand":"ModuBath","offers":[{"title":"Default Title","offer_id":57713217798310,"sku":null,"price":27.99,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0763\/5786\/1542\/files\/71zwKZOzLKL._AC_SL1500.jpg?v=1792487732","url":"https:\/\/www.crispkitchenbase.company\/products\/8-pack-shower-caddy-with-2-towel-bars-shower-storage-bathroom-organizer","provider":"ModuBath","version":"1.0","type":"link"}