gpt4 book ai didi

jquery - 在 Carousel materializecss 中停止循环

转载 作者:太空宇宙 更新时间:2023-11-04 07:54:15 24 4
gpt4 key购买 nike

我有一个 Material CSS 轮播,我想在它到达最后一个元素后停止循环,而不是返回到第一个元素,它应该显示一条消息。同样,当我回击时,它应该显示一条消息,而不是转到最后一项。

 <div class="carousel carousel-slider center" data-indicators="true">
<div class="carousel-fixed-item center">
<a class="btn waves-effect white grey-text darken-text-2">button</a>
</div>
<div class="carousel-item red white-text" href="#one!">
<h2>First Panel</h2>
<p class="white-text">This is your first panel</p>
</div>
<div class="carousel-item amber white-text" href="#two!">
<h2>Second Panel</h2>
<p class="white-text">This is your second panel</p>
</div>
<div class="carousel-item green white-text" href="#three!">
<h2>Third Panel</h2>
<p class="white-text">This is your third panel</p>
</div>
<div class="carousel-item blue white-text" href="#four!">
<h2>Fourth Panel</h2>
<p class="white-text">This is your fourth panel</p>
</div>
</div>
<button onclick="backward()">Back</button>&emsp;
<button onclick="forward();">Next</button>
<script>
function forward() {
if ($('.carousel-item ').element.is('.active, .last')) alert('Last');
$('.carousel').carousel('next')
}
<script>

最佳答案

您的 jQuery 不是特别正确。如果您想检查事件轮播元素是否具有 last 类,您的 jQuery 应该如下所示:

 // Note this is not the code you need. I'm just explaining a principle here
if ($('.carousel-item.active').is('.last')) {
alert('last');
}

但是,这不是检查事件轮播元素是否为最后一个的正确方法,因为 materialize 不会将类 last 添加到最后一个轮播元素。
查看标记,一种可靠的方法是检查事件轮播元素的下一个兄弟项是否具有类 carousel-item
此外,您可能还想停止相反方向的循环,方法是检查当前事件的轮播元素是否是第一个在其父级(.carousel- slider ):

$('.carousel').carousel();

function forward() {
if ($('.carousel-item.active').next().is('.carousel-item')) {
$('.carousel').carousel('next');
} else {
alert('last');
}
}
function backward() {
if ($('.carousel-slider .carousel-item').first().is('.active')) {
alert('first')
} else {
$('.carousel').carousel('prev');
}
}

请注意,以上内容将适用于您页面中的所有轮播。如果您有多个并且想将此功能限制为特定的一个,则需要为其提供一个 ID 并在您的 jQuery 中使用该 ID。

让我们看看它是如何工作的:

$('.carousel').carousel({fullWidth: true});

function forward(){
if ($('.carousel-item.active').next().is('.carousel-item')) {
$('.carousel').carousel('next');
} else {
alert('last');
}
}
function backward(){
if ($('.carousel-slider .carousel-item').first().is('.active')) {
alert('first')
} else {
$('.carousel').carousel('prev');
}
}
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/materialize/0.100.2/css/materialize.min.css">
<script type="text/javascript" src="https://code.jquery.com/jquery-3.2.1.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/materialize/0.100.2/js/materialize.min.js"></script>

<div class="carousel carousel-slider center" data-indicators="true">
<div class="carousel-fixed-item center">
<a class="btn waves-effect white grey-text darken-text-2">button</a>
</div>
<div class="carousel-item red white-text" href="#one!">
<h2>First Panel</h2>
<p class="white-text">This is your first panel</p>
</div>
<div class="carousel-item amber white-text" href="#two!">
<h2>Second Panel</h2>
<p class="white-text">This is your second panel</p>
</div>
<div class="carousel-item green white-text" href="#three!">
<h2>Third Panel</h2>
<p class="white-text">This is your third panel</p>
</div>
<div class="carousel-item blue white-text" href="#four!">
<h2>Fourth Panel</h2>
<p class="white-text">This is your fourth panel</p>
</div>
</div>

<nav>
<div class="nav-wrapper grey darken-2">
<ul class="left">
<li><a onclick="backward()">Back</a></li>
<li><a onclick="forward();">Next</a></li>
</ul>
</div>
</nav>

关于jquery - 在 Carousel materializecss 中停止循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47483182/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com