简体   繁体   English

当画廊只有一个图像时,jQuery隐藏下一个和上一个按钮不起作用

[英]jQuery to hide next & previous buttons not working when the gallery has only one image

I have a carousel from Flickity which I'm trying to hide the left and right arrows and the pagination from. 我有一个来自Flickity的旋转木马,我想隐藏其中的左右箭头和分页。

CodePen 密码笔

JQuery Code jQuery代码

$('.carousel').each(function() {
if ($(this).find('div.carousel-cell').length === 1) 
$(this).find('button.flickity-prev-next-button previous, button.flickity-prev-next-button next, button.flickity-page-dots').hide();
});

Carousel Code 轮播代码

<div class="carousel mt-1x mb-1x flickity-enabled" data-navdots="true" data-auto="false" data-buttons="true" data-wrap="true" data-adaptiveheight="false" tabindex="0">

<div class="flickity-viewport" style="height: 385.188px; touch-action: pan-y;">
    <div class="flickity-slider" style="left: 0px; transform: translateX(0%);">
        <div class="carousel-item is-selected" aria-selected="true" style="position: absolute; left: 0%;">
            <img src="/img/asset/bWFpbi9oZWFsdGhjYXJlL1BSSU1BUlkvQlVSR09QQUstQkxJU1RFUi1QUklNQVJZLTEuanBn?w=2880&amp;h=1600&amp;s=c58a408a48a295ed53498fd03655878f" alt="" title="" class="mb-1x">

        </div>
    </div>
</div>
<button class="flickity-button flickity-prev-next-button previous" type="button" disabled="" aria-label="Previous">
    <svg class="flickity-button-icon" viewBox="0 0 100 100">
        <path d="M 10,50 L 60,100 L 70,90 L 30,50  L 70,10 L 60,0 Z" class="arrow"></path>
    </svg>
</button>
<button class="flickity-button flickity-prev-next-button next" type="button" disabled="" aria-label="Next">
    <svg class="flickity-button-icon" viewBox="0 0 100 100">
        <path d="M 10,50 L 60,100 L 70,90 L 30,50  L 70,10 L 60,0 Z" class="arrow" transform="translate(100, 100) rotate(180) "></path>
    </svg>
</button>
<ol class="flickity-page-dots">
    <li class="dot is-selected" aria-label="Page dot 1" aria-current="step"></li>
</ol>

I think its happens because you run your code before the flickity create all necessary elements. 我认为发生这种情况的原因是,您需要在快速创建所有必要元素之前运行代码。 Thus if you cover your code into function and call it a little bit later via setTimeout then all works fine. 因此,如果您将代码包含在函数中,然后稍后通过setTimeout对其进行调用,则一切正常。 But in first you need to correct selector. 但是首先,您需要更正选择器。 Correct selector looks like button.flickity-prev-next-button.previous, button.flickity-prev-next-button.next, ol.flickity-page-dots instead of yours `button.flickity-prev-next-button previous, button.flickity-prev-next-button next, button.flickity-page-dots'. 正确的选择器看起来像button.flickity-prev-next-button.previous, button.flickity-prev-next-button.next, ol.flickity-page-dots而不是您的button.flickity-prev-next-button先前的, button.flickity-prev-next-button下一步,button.flickity-page-dots'。 Finally it might be looked like 最终看起来像

function x() {
 $('.carousel').each(function() {
   if ($(this).find('div.carousel-cell').length === 1) {
      $(this).find('button.flickity-prev-next-button.previous, button.flickity-prev-next-button.next, ol.flickity-page-dots').hide();
   }
 });
};
setTimeout(x,1000);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM