检查value是否不等于数组中的位置
Check if value is not equal to position in array
我试图为一个数据标签不匹配数组当前位置的值的元素删除一个类。
数组的值为[0,2,4,6,8,10],但这改变了,所以我不能硬编码它。如果幻灯片时间为4,当前时间为6,显示"is-active"类,但在4时删除"is-active"类。
if(slideshow[slideshowPosition] == currentTime) {
$('[data-slideshow-time="' + slideshow[slideshowPosition] + '"]').addClass("is-active");
$('[data-slideshow-time="' + slideshow.forEach(!slideshow[slideshowPosition]) + '"]').removeClass("is-active");
}
<div class="slideshow" data-slideshow-audio="audio-default">
<ul class="u-unstyled-list">
<li data-slideshow-time="0">
<img src="../img/1-1-slideshow-a.jpg" alt="">
</li>
<li data-slideshow-time="2">
<img src="../img/1-1-slideshow-b.jpg" alt="">
</li>
<li data-slideshow-time="4">
<img src="../img/1-1-slideshow-c.jpg" alt="">
</li>
<li data-slideshow-time="6">
<img src="../img/1-1-slideshow-d.jpg" alt="">
</li>
<li data-slideshow-time="8">
<img src="../img/1-1-slideshow-e.jpg" alt="">
</li>
</ul>
</div>
如果一次只有一张幻灯片是活动的,您可以简单地先从所有幻灯片中删除类,然后在预期的幻灯片上设置类,如下所示:
$('[data-slideshow-time]').removeClass("is-active");
$('[data-slideshow-time="' + slideshow[slideshowPosition] + '"]').addClass("is-active");
您打算使用.forEach()
的方式将不起作用,但是。.forEach()
需要一个遍历元素的函数。此外,.forEach()
不能以您期望的方式神奇地生成jQuery选择器。
如果出于某种原因,您仍然希望循环遍历其他元素,有许多方法可以做到这一点:
我如何相信你打算使用
.forEach()
:// comparing slideshow values slideshow.forEach( function( value ) { if( value != slideshow[slideshowPosition] ) { $('[data-slideshow-time="' + value + '"]').removeClass("is-active"); } } ); // or, comparing the slideshow indexes slideshow.forEach( function( value, index ) { if( index != slideshowPosition ) { $('[data-slideshow-time="' + value + '"]').removeClass("is-active"); } } );
使用属性not equal选择器和jQuery的
.each()
:$( '[data-slideshow-time!="' + slideshow[slideshowPosition] + '"]' ).each( function( item ) { // item is a DOM element $( item ).removeClass( 'is-active' ); } );
使用jQuery的
.filter()
和链接它与jQuery的.each()
(相当低效):$( '[data-slideshow-time]' ).filter( function( item ) { // jQuery allows you to get data-* attribute values like this return $( item ).data( 'slideshow-time' ) != slideshow[slideshowPosition]; } ) .each( function( item ) { // item is a DOM element $( item ).removeClass( 'is-active' ); } );
等。等。
相关文章:
- 如何从某个位置顺时针和逆时针循环数组
- 将javascript数组中的项移动到特定位置的有效方法
- 生成ACF标记位置的数组(元素列表后缺少])
- 基于javascript中位置的数组差异
- Javascript删除数组中某个位置之后的项
- 在数组中迭代时的JS循环位置
- 在两个位置显示数组中的随机单词
- 放大位置数组
- Javascript 地理位置:将坐标存储在数组中
- 将地理位置坐标放入数组中
- 将地理编码器的位置保存到数组中
- 无法将所有位置值保存到我的数组中
- 如果用户靠近并触发特定事件,请检查位置数组
- 猫鼬位置数组更新
- 生成XSLT处理后的位置数组
- 如何在谷歌地图的位置数组中赋值
- 需要帮助合并2个位置数组和for循环
- 带有静态变量的地理位置数组
- 谷歌地图-从基于地图的位置数组中获取值'目前的观点
- 如何使用位置数组添加折线