我可以自动生成一个jquery块,它对不同的元素做同样的事情吗?

时间:2016-04-11 07:38:44

标签: javascript jquery

为简单起见,我们假设我有一个元素列表"#a1,a2,a3,a4 ......"和另一个列表"#b1,b2,b3,b4 ..."。当我点击#b1时,我希望显示#a1,我希望在点击#b2时显示#a2,等等。

我可以写:

$("#a1").click(function() {
  $("b1).show();
});
$("#a2").click(function() {
  $("b2).show();
});
...

等等。但是如果列表变得更长,那将会是很多代码。

有没有办法自动生成jQuery?这里有一些非常粗糙的rails-y伪代码来说明我想要做的事情:

for (ids a1 - a99).each do |id|
  $("#a[id]").click(function() {
    $("#b[id]).show();
  });
end

2 个答案:

答案 0 :(得分:0)

使用starts-with选择器并使用正则表达式获取数字。

$('[id^="a"]').click(function(){
   var number = /\d+/.exec(this.id)[0];
   $('#b' + number).show()
});

答案 1 :(得分:0)

我认为循环可能就足够了。将所有处理程序附加到document ready

// arr is an array of int, according to your DOM
$.each(arr, function(){
  $("#a"+this).click(function() {
    $("#b"+this).show();
  });
});