jQuery当前菜单代码优化
我用 jQuery 编写了以下代码:
var href = window.location.href;
if (href.search('/welcome\\/') > 0)
{
$('.menuwelcome').css('display', 'block');
$('#welcome2').append('<b>Приглашаем субагентов</b>').find('a').remove();
$('#welcome2').find('img').attr('src', '/static/images/arrow_black.gif');
}
if (href.search('/contacts\\/') > 0)
{
$('.menuwelcome').css('display', 'block');
$('#mcontacts').append('<b>Контакты</b>').find('a').remove();
$('#mcontacts').find('img').attr('src', '/static/images/arrow_black_down.gif');
}
if (href.search('/sindbad_history\\/') > 0)
{
$('.menuwelcome').css('display', 'block');
$('.menuwelcome:first').append('<b>История</b>').find('a').remove();
$('.menuwelcome:first').find('img').attr('src', '/static/images/arrow_black.gif');
}
if (href.search('/insurance\\/') > 0)
{
$('.menusafe').css('display', 'block');
$('#msafe').append('<b>Страхование</b>').find('a').remove();
$('#msafe').find('img').attr('src', '/static/images/arrow_black_down.gif');
}
if (href.search('/insurance_advices\\/') > 0)
{
$('.menusafe').css('display', 'block');
$('.menusafe:first').append('<b>Полезная информация</b>').find('a').remove();
$('.menusafe:first').find('img').attr('src', '/static/images/arrow_black.gif');
}
上面的代码有重复的任务,我们可以使代码紧凑吗? 我想最小化这段代码。我应该如何实现这个目标?
I have below code written in jQuery:
var href = window.location.href;
if (href.search('/welcome\\/') > 0)
{
$('.menuwelcome').css('display', 'block');
$('#welcome2').append('<b>Приглашаем субагентов</b>').find('a').remove();
$('#welcome2').find('img').attr('src', '/static/images/arrow_black.gif');
}
if (href.search('/contacts\\/') > 0)
{
$('.menuwelcome').css('display', 'block');
$('#mcontacts').append('<b>Контакты</b>').find('a').remove();
$('#mcontacts').find('img').attr('src', '/static/images/arrow_black_down.gif');
}
if (href.search('/sindbad_history\\/') > 0)
{
$('.menuwelcome').css('display', 'block');
$('.menuwelcome:first').append('<b>История</b>').find('a').remove();
$('.menuwelcome:first').find('img').attr('src', '/static/images/arrow_black.gif');
}
if (href.search('/insurance\\/') > 0)
{
$('.menusafe').css('display', 'block');
$('#msafe').append('<b>Страхование</b>').find('a').remove();
$('#msafe').find('img').attr('src', '/static/images/arrow_black_down.gif');
}
if (href.search('/insurance_advices\\/') > 0)
{
$('.menusafe').css('display', 'block');
$('.menusafe:first').append('<b>Полезная информация</b>').find('a').remove();
$('.menusafe:first').find('img').attr('src', '/static/images/arrow_black.gif');
}
The code above have repetitive task, Can we make the code compact?
I want to minimize this code. How should I achieve this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
将所有变量位放入数组字典中:
然后循环遍历案例:
Place all the variable bits in a dictionary of arrays:
Then loop over the cases:
如果您要删除的链接包含与您要插入的文本相同的文本(我怀疑是这种情况),您可以使用
解开
而不是跟踪它。这将使其更能适应文本的变化。我还更喜欢使用类来更改“当前”菜单项的字体样式。关闭@Marcelo 的解决方案:If the link that you are removing contains the same text that you are inserting, which I suspect is the case, you could use
unwrap
instead of keeping track of it. This would make it more resilent to changes in the text. I'd also prefer using a class to change the font style for the "current" menu item. Keying off @Marcelo's solution: