gpt4 book ai didi

jquery - 如何简化代码 jQuery($) .each

转载 作者:行者123 更新时间:2023-12-01 05:22:12 26 4
gpt4 key购买 nike

我是新来的,刚刚开始学习 javascript/jQuery,我编写了一些代码,但我认为这不是有效的代码,它太长了,有点重复同样的事情,你们也许可以制作一个这个的更简单的代码版本?谢谢。

这里我附上 html 图片: enter image description here

        var sections = $('.section-page'), 
sp = $('.sp'),
sp2 = $('.sp2'),
sp3 = $('.sp3');

$(window).on('scroll', function () {
var cur_pos = $(this).scrollTop();
sections.each(function() {
var top = $(this).offset().top - nav_height,
bottom = top + $(this).outerHeight();
if (cur_pos >= top && cur_pos <= bottom) {
nav.find('a').parent().closest('li').removeClass('current');
nav.find('a[href="#'+$(this).attr('id')+'"]').parent().closest('li').addClass('current');
}
});
sp.each(function() {
var top = $(this).offset().top - nav_height,
bottom = top + $(this).outerHeight();
if (cur_pos >= top && cur_pos <= bottom) {
nav.find('a').parent().closest('li').removeClass('current');
$('#cssmenu > ul > li:nth-child(7)').addClass('current');
}
});
sp2.each(function() {
var top = $(this).offset().top - nav_height,
bottom = top + $(this).outerHeight();
if (cur_pos >= top && cur_pos <= bottom) {
nav.find('a').parent().closest('li').removeClass('current');
$('#cssmenu > ul > li:nth-child(6)').addClass('current');
}
});
sp3.each(function() {
var top = $(this).offset().top - nav_height,
bottom = top + $(this).outerHeight();
if (cur_pos >= top && cur_pos <= bottom) {
nav.find('a').parent().closest('li').removeClass('current');
$('#cssmenu > ul > li:nth-child(3)').addClass('current');
}
});
});

最佳答案

您可以为重复 4 次的代码创建一个函数 - 可以通过向该函数传递参数来覆盖一些变化:

var sections = $('.section-page'), 
sp = $('.sp'),
sp2 = $('.sp2'),
sp3 = $('.sp3');

$(window).on('scroll', function () {
var cur_pos = $(this).scrollTop();

function setCurrent(elem, child) {
elem.each(function() {
var top = $(this).offset().top - nav_height,
bottom = top + $(this).outerHeight();
if (cur_pos >= top && cur_pos <= bottom) {
nav.find('a').parent().closest('li').removeClass('current');
var li = child !== undefined
? $('#cssmenu > ul > li:nth-child(' + child + ')')
: nav.find('a[href="#'+$(this).attr('id')+'"]').parent().closest('li');
li.addClass('current');
}
});
}

setCurrent(sections); // second argument not passed => undefined child
setCurrent(sp, 7);
setCurrent(sp2, 6);
setCurrent(sp3, 3);
});

关于jquery - 如何简化代码 jQuery($) .each,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42316186/

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