jquery - 如何通过单击元素取消功能的触发?
问题描述
我创建了一个在特定时间自动触发的滑块。我设置当我单击滑块后面的元素时,它将出现在前面并且数据位置 = 1。问题是当我单击已经在前面的元素时,它会启动我的功能并尝试添加它在前面,即使它已经存在,并且会发生这种效果:https ://vimeo.com/378484003 。如何取消对已经在前面的项目的点击?
jQuery(document).ready(function () {
// get active
var get_active = $("#dp-slider .dp_item:first-child").data("class");
$("#dp-dots li").removeClass("active");
$("#dp-dots li[data-class=" + get_active + "]").addClass("active");
var num = 1;
$("#dp-dots li, #dp-slider .dp_item").click(function () {
var get_slide = $(this).attr('data-class');
num = get_slide;
generalClick(get_slide);
});
function generalClick(number) {
$("#dp-dots li").removeClass("active");
$("#dp-dots li:nth-child(" + number + ")").addClass("active");
$("#dp-slider .dp_item[data-class=" + number + "]").hide().prependTo("#dp-slider").fadeIn();
$("#dp-slider .dp_item").removeClass('test');
$("#dp-slider .dp_item[data-class=" + number + "]").addClass("test");
$.each($('#slider .dp_item'), function (index, dp_item) {
$(dp_item).attr('data-position', index + 1);
});
$(".text .div").removeClass('is-active');
$(".div-" + number).addClass('is-active');
$(".dp_item .dp-content").removeClass('opacity');
$(".dp_item .dp-content img").removeClass('fade-up');
$(".item-" + number + " .dp-content").addClass('opacity');
$(".item-" + number + " .dp-content img").addClass('fade-up');
}
var myInterval = setInterval(myTimer, 5000);
function myTimer() {
num++;
if (num > $("#dp-dots li").length) {
num = 1;
}
generalClick(num);
}
$("#home .div, #home .dp_item, #dp-dots").on("mouseenter", function () {
clearInterval(myInterval);
}).on("mouseleave", function () {
myInterval = setInterval(myTimer, 5000);
});
});
解决方案
您可以获取单击的元素并检查它是否具有 .active 类。而且只是有条件的。
$("#dp-dots li, #dp-slider .dp_item").click(function () {
var class = $(this).attr("class");
if(!class.includes('active')){
var get_slide = $(this).attr('data-class');
num = get_slide;
generalClick(get_slide);
}
});
推荐阅读
- python-3.x - 如何创建包含具有均匀随机分布的连续值和分类值的特定大小的数据框
- nuget - 微软的“....抽象”Nuget 包的想法是什么?
- javascript - 隐式属性访问
- python - 是否有用于 Python 交互的 Emacs Lisp API?
- go - 所有 goroutine 在我的异步代码中都处于休眠状态
- c# - 在 SP 中先前更改日志详细信息的末尾附加字符串
- python - 如何使用 PYTHON 3.7.7 将 XML ISO-8859-1 转换为 UTF-8
- android - 在任何输入上使用 Qt 5.15 的 Android 上都看不到软键盘
- flutter - 如何将 64 位值的矩阵转换为 Dart 中的图像响应
- android - 当一个子 recyclerview 的项目在单击项目时发生变化时,所有子 recyclerView 的项目都发生了变化