首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用jquery进行干式编程

用jquery进行干式编程
EN

Stack Overflow用户
提问于 2010-07-07 20:51:11
回答 5查看 520关注 0票数 3

jquery新手的身份发布。我相信一定会有一种方法,以干燥的方式压缩下面的代码。本质上,这只是一个显示/隐藏,应用于一个页面上的多个元素,所有这些元素都使用相同的模板和命名约定:

代码语言:javascript
运行
复制
$("#homelink1").hover(
    function() { $("#poptext1").show(); },
    function() { $("#poptext1").hide(); }
);

$("#homelink2").hover(
    function() { $("#poptext2").show(); },
    function() { $("#poptext2").hide(); }
);
...

我被困在如何将它转换成带有传递参数的函数上,这样我就可以传递整数(1或2),并让函数计算其余的。

$("#homelink" + param).hover

EN

Stack Overflow用户

发布于 2010-07-07 21:06:35

您可以使用regexp从悬浮的homelink中获取数字,然后切换相关的poptext

试试看: http://jsfiddle.net/xFR3s/

代码语言:javascript
运行
复制
$("#homelink1,#homelink2").hover( function() { 
    $("#poptext" + this.id.match(/\d+$/)[0]).toggle(); 
});​

您可以使用homelink元素的“开始”选择器使其更短。效率较低,但它只在DOM负载上运行一次,所以也许可以。

试试看: http://jsfiddle.net/xFR3s/1/

代码语言:javascript
运行
复制
$("[id^=homelink]").hover( function() { 
    $("#poptext" + this.id.match(/\d+$/)[0]).toggle(); 
});​

编辑:--如果你不想马上解释它,我想我会这样做:

试试看: http://jsfiddle.net/xFR3s/2/

代码语言:javascript
运行
复制
$("[id^=homelink]").each(function() {
    var num = this.id.match(/\d+$/)[0];
    $(this).hover( function() { 
        $("#poptext" + num).toggle(); 
    });​
});

或者这个:

试试看: http://jsfiddle.net/xFR3s/3/

代码语言:javascript
运行
复制
$("[id^=homelink]").each( function() {
    $(this).hover( setUpHover(this.id.match(/\d+$/)[0]) );
});

function setUpHover(num) {
    return function() {
        $("#poptext" + num).toggle(); 
    };
}​
票数 2
EN
查看全部 5 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3198697

复制
相关文章

相似问题

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