Jquery根据他们的id号选择div

时间:2011-03-27 09:58:42

标签: jquery css-selectors

经过大量研究后,我发现了JQuery并无法找到问题的答案,因为我不知道如何表达它。

我的页面上有2个标尺+2个指南,2个按钮用于显示或隐藏它们。 我写了一些有用的东西,但我希望通过缩短代码来优化代码。

这是:

$('#ruler-bg1, #ruler-bg2').hide();

$('#ruler1').click(function() {
  $('#ruler-bg1').slideToggle(100);
  $('#guide1').toggleClass('guide-on');
});

$('#ruler2').click(function() {
  $('#ruler-bg2').slideToggle(100);
  $('#guide2').toggleClass('guide-on');
});

我无法弄清楚如何对2个功能进行分组,以便点击#ruler+number显示#ruler-bg+same_number#guide+same_number

3 个答案:

答案 0 :(得分:2)

这样的事情应该做:

$('#ruler1, #ruler2').click(function(){
    var num = this.id.substr(6);

    $('#ruler-bg' + num).slideToggle(100);
    $('#guide' + num).toggleClass('guide-on');
});

如果点击的元素与作用的元素之间存在某种结构关系,那可能会更好......

答案 1 :(得分:1)

我会在所有“标尺”中添加一个“统治者”类,并使用id作为标尺-bg和指南上的标识符。

$('.ruler').click(function(){
    $('#bg-'+this.id).slideToggle(100);
    $('#guide-'+this.id).toggleClass('guide-on');
});

答案 2 :(得分:0)

initRuler(1);
initRuler(2);

function initRuler(id) {
  $('#ruler' + id).click(function() {
    $('#ruler-bg' + id).slideToggle(100);
    $('#guide' + id).toggleClass('guide-on');
  });
}