[英]Toggle class between list elements on click of a button
我需要在列表的元素之间删除并添加一个 class,如果我点击#swapThumb
按钮,它应该从当前元素中删除selected
的 class,然后添加到下一个元素。
这就是我所拥有的
html
<ul id="product-thumbnails" class="thumbnails list-inline">
<li class="vtmb vt-123 selected" style="">
<a href="/uno"><img src="https://via.placeholder.com/100x100"></a>
</li>
<li class="vtmb vt-456" style="">
<a href="/dos"><img src="https://via.placeholder.com/100x100"></a>
</li>
<li class="vtmb vt-789" style="display: none">
<a href="/tres"><img src="https://via.placeholder.com/100x100"></a>
</li>
<li class="vtmb vt-101" style="">
<a href="/cuatro"><img src="https://via.placeholder.com/100x100"></a>
</li>
<li class="vtmb vt-121" style="display: none">
<a href="/cinco"><img src="https://via.placeholder.com/100x100"></a>
</li>
</ul>
<button id="swapThumb">Next</button>
javascript
let thumbsNailsList = $('#product-thumbnails').find('li');
let swapButton = $('#swapThumb');
thumbsNailsList.each((index, item) => {
let thumbsAvailable = $(item).attr('style');
if (thumbsAvailable === '') {
$(swapButton).on('click', () => {
$(item).removeClass('selected');
$(item).closest($(item)).next().addClass('selected');
});
}
});
首先,我正在检查li
元素是否具有空style
属性(这是必需的),如果是,则触发点击验证。
单击应从第一个元素中删除selected
的 class,然后添加到下一个元素,依此类推(它应该与空style
属性匹配)。 一旦selected
的 class 命中list
的最后一个元素,它应该将 class 返回到第一个元素。
此代码片段会将其下方元素的 class 更改为选中并将其从当前元素中删除,同时保留所有其他类。 如果在最后一个元素上单击next
,它也会循环回到开始元素。 我听说 jQuery 函数比文档函数更昂贵,不应该用于这类事情。 将此应用于您的问题,您应该得到预期的结果
let i = 0; let thumbsNailsList = document.getElementById("product-thumbnails").children; let btn = document.getElementById("btn"); btn.onclick = function() { var prevClasses = thumbsNailsList[i].className; thumbsNailsList[i].className = prevClasses.replace("selected", ""); i = (i+1) % thumbsNailsList.length; thumbsNailsList[i].className = "selected"; console.log(thumbsNailsList); }
<ul id="product-thumbnails"> <li class='selected'></li> <li class=''></li> <li class=''></li> <li class=''></li> </ul> <button id="btn">Next</button>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.