以jquery新手的身份发布。我相信一定会有一种方法,以干燥的方式压缩下面的代码。本质上,这只是一个显示/隐藏,应用于一个页面上的多个元素,所有这些元素都使用相同的模板和命名约定:
$("#homelink1").hover(
function() { $("#poptext1").show(); },
function() { $("#poptext1").hide(); }
);
$("#homelink2").hover(
function() { $("#poptext2").show(); },
function() { $("#poptext2").hide(); }
);
...我被困在如何将它转换成带有传递参数的函数上,这样我就可以传递整数(1或2),并让函数计算其余的。
$("#homelink" + param).hover
发布于 2010-07-07 21:06:35
您可以使用regexp从悬浮的homelink中获取数字,然后切换相关的poptext。
试试看: http://jsfiddle.net/xFR3s/
$("#homelink1,#homelink2").hover( function() {
$("#poptext" + this.id.match(/\d+$/)[0]).toggle();
});您可以使用homelink元素的“开始”选择器使其更短。效率较低,但它只在DOM负载上运行一次,所以也许可以。
试试看: http://jsfiddle.net/xFR3s/1/
$("[id^=homelink]").hover( function() {
$("#poptext" + this.id.match(/\d+$/)[0]).toggle();
});编辑:--如果你不想马上解释它,我想我会这样做:
试试看: http://jsfiddle.net/xFR3s/2/
$("[id^=homelink]").each(function() {
var num = this.id.match(/\d+$/)[0];
$(this).hover( function() {
$("#poptext" + num).toggle();
});
});或者这个:
试试看: http://jsfiddle.net/xFR3s/3/
$("[id^=homelink]").each( function() {
$(this).hover( setUpHover(this.id.match(/\d+$/)[0]) );
});
function setUpHover(num) {
return function() {
$("#poptext" + num).toggle();
};
}https://stackoverflow.com/questions/3198697
复制相似问题