【发布时间】:2018-07-25 12:25:04
【问题描述】:
我已经为一些靠近的元素编写了一些简单的 jquery。每个都工作得很好,但我希望能得到一些帮助,使我的 jquery 更高效,更小,以便放置在单独的 JS 文件中。我是 jQuery 的新手,并不真正知道如何结合我所写的内容。任何帮助是极大的赞赏!我的代码如下:
$('.fade-carousel').on('init', function(event, slick, currentSlide, nextSlide) {
if ($('.slick-active .slide-container div').hasClass('intro-bg')) {
$('#header').addClass('transparent-header')
} else {
$('#header').removeClass('transparent-header');
}
$('.fade-carousel').on('beforeChange', function(event, slick, currentSlide, nextSlide) {
if ($('.slide-container:eq(' + nextSlide + ') > div').hasClass('intro-bg')) {
$('#header').addClass('transparent-header')
} else {
$('#header').removeClass('transparent-header');
}
});
});
$('.fade-carousel').on('init', function(event, slick, currentSlide, nextSlide) {
if ($('.slick-active .slide-container div').hasClass('intro-bg')) {
$('.slick-arrow').removeClass('black-arrow')
} else {
$('.slick-arrow').addClass('black-arrow')
}
$('.fade-carousel').on('beforeChange', function(event, slick, currentSlide, nextSlide) {
if ($('.slide-container:eq(' + nextSlide + ') > div').hasClass('intro-bg')) {
$('.slick-arrow').removeClass('black-arrow')
} else {
$('.slick-arrow').addClass('black-arrow');
}
});
});
$('.fade-carousel').on('init', function(event, slick, currentSlide, nextSlide) {
if ($('.slick-active .slide-container div').hasClass('intro-bg')) {
$('.scroll-arrow i').removeClass('black-arrow')
} else {
$('.scroll-arrow i').addClass('black-arrow')
}
$('.fade-carousel').on('beforeChange', function(event, slick, currentSlide, nextSlide) {
if ($('.slide-container:eq(' + nextSlide + ') > div').hasClass('intro-bg')) {
$('.scroll-arrow i').removeClass('black-arrow')
} else {
$('.scroll-arrow i').addClass('black-arrow');
}
});
});
$('.fade-carousel').on('init', function(event, slick, currentSlide, nextSlide) {
if ($('.slick-active .slide-container div').hasClass('video-intro')) {
$('#header').addClass('transparent-header')
}
$('.fade-carousel').on('beforeChange', function(event, slick, currentSlide, nextSlide) {
if ($('.slide-container:eq(' + nextSlide + ') > div').hasClass('video-intro')) {
$('#header').addClass('transparent-header')
}
});
});
【问题讨论】:
-
看起来您正在重复绑定,具有不同的内部条件和更改。没有什么说您不能在一个绑定中执行所有条件和逻辑。
-
您能发布相关 HTML 的 sn-p 吗?在某些情况下,我们可以使用一些兄弟选择器或
.closest()来防止解析器每次都重新遍历 DOM。但是,要使其正常工作,我们需要知道您的轮播的结构...
标签: javascript jquery