首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何简化这段Jquery代码?

如何简化这段Jquery代码?
EN

Stack Overflow用户
提问于 2011-08-11 09:20:53
回答 6查看 154关注 0票数 0
代码语言:javascript
复制
$('a#golf-link').click(function () {
    $('ul#golf').fadeIn(500);
    $('ul.img-list').not('#golf').fadeOut(200);
    $('a#golf-link').addClass("current-link");
    $('.side-menu li a').not('#golf-link').removeClass("current-link");
    });
$('a#bags-link').click(function () {
    $('ul#bags').fadeIn(500);
    $('ul.img-list').not('#bags').fadeOut(200);
    $('a#bags-link').addClass("current-link");
    $('.side-menu li a').not('#bags-link').removeClass("current-link");
    });
$('a#keyrings-link').click(function () {
    $('ul#keyrings').fadeIn(500);
    $('ul.img-list').not('#keyrings').fadeOut(200);
    $('a#keyrings-link').addClass("current-link");
    $('.side-menu li a').not('#keyrings-link').removeClass("current-link");
    });

正如你所看到的,上面的代码是重复的,我想简化它。

我不确定我在这里是否使用了正确的术语,但您应该理解它的要点。

我想要做的是创建一个函数,如下所示

代码语言:javascript
复制
$('a#l-//VARIABLE-HERE//-link').click(function () {
    $('div#l-//VARIABLE-HERE//').fadeIn(500);
    $('div.clothes-type').not('#l-//VARIABLE-HERE//').fadeOut(200);
    $('a#l-//VARIABLE-HERE//-link').addClass("current-link");
    $('.side-menu li a').not('#l-//VARIABLE-HERE//-link').removeClass("current-link");
    });

我所需要做的就是调用这个函数并将//VARIABLE-HERE//替换为高尔夫、袋子、钥匙圈等。

任何帮助都将不胜感激。

谢谢。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2011-08-11 09:34:52

假设您的命名约定是恒定的:

代码语言:javascript
复制
function setItUp(objName) {
    $('a#' + objName + '-link').click(function() {
    $('ul#' + objName).fadeIn(500);
        $('ul.img-list').not('#' + objName).fadeOut(200);
        $('a#' + objName + '-link').addClass("current-link");
        $('.side-menu li a').not('#' + objName + '-link').removeClass("current-link");
    });
}

然后打你的电话:

代码语言:javascript
复制
setItUp('golf');
setItUp('bags');
setItUp('keyrings');
票数 1
EN

Stack Overflow用户

发布于 2011-08-11 09:23:12

最简单的方法是在所有三组对象中使用公共类,这样相同的代码就可以在任何地方运行。但是,我们必须看到实际的HTML才能知道如何更具体地推荐它。

其次,您可以创建一个单独的函数,该函数接受一个参数来设置单击处理程序并执行单击操作。

代码语言:javascript
复制
function configureClick(item) {
    $('a' + item + '-link').click(function() {
        $('ul' + item).fadeIn(500);
        $('ul.img-list').not(item).fadeOut(200);
        $('a' + item + '-link').addClass("current-link");
        $('.side-menu li a').not(item + '-link').removeClass("current-link");
    });
}

configureClick("#golf");
configureClick("#bags");
configureClick("#keyrings");

最后,如果您向我们展示了实际的HTML,各种项目之间可能会有几何排列,这些项目与标记和标识符结合在一起,可以编码以确定对于给定的单击要处理哪些项(父项、兄弟项、标记类型等)。

票数 3
EN

Stack Overflow用户

发布于 2011-08-11 09:33:15

像这样的东西应该是可行的

代码语言:javascript
复制
$('a[id$="-link"]').click(function () {

    itemName =  $(this).attr('id').replace("-link","");

    $('div#'+itemName).fadeIn(500);
    $('div.clothes-type').not('#l-'+itemName).fadeOut(200);
    $('a#l-'+itemName +'-link').addClass("current-link");
    $('.side-menu li a').not('#l-'+itemName +'-link').removeClass("current-link");        

});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7019814

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档