如何缩短此功能(addClass,attr)

时间:2016-02-22 18:09:39

标签: javascript jquery raphael

如果t1$('#t1') 相同的对象,我如何缩短以下代码?

k1.hover(function(){
    $('#k1').addClass('hovered');
}, function(){
    $('#k1').removeClass('hovered');
});

k2.hover(function(){
    $('#k2').addClass('hovered');
}, function(){
    $('#k2').removeClass('hovered');
});

k3.hover(function(){
    $('#k3').addClass('hovered');
}, function(){
    $('#k3').removeClass('hovered');
});

k4.hover(function(){
    $('#k4').addClass('hovered');
}, function(){
    $('#k4').removeClass('hovered');
});

k5.hover(function(){
    $('#k5').addClass('hovered');
}, function(){
    $('#k5').removeClass('hovered');
});

我想到这样的事情:

var magictrick = k[number].hover(function(){
  $('#k[number]').addClass('hovered');
}, function(){
  $('#k[number]').removeClass('hovered');
});

magicktrick[1,2,3,4,5,6,7,8,9];

这可能吗?

3 个答案:

答案 0 :(得分:1)

// t1 hover
$('#t1').hover(function(){
    t1.attr({fill: '#8b2332'}).addClass('hovered');
}, function(){
    t1.attr({fill: '#e6e6e6'}).removeClass('hovered');
});


// t2 hover
$('#t2').hover(function(){
    t2.attr({fill: '#8b2332'}).addClass('hovered');
}, function(){
    t2.attr({fill: '#e6e6e6'}).removeClass('hovered');
});

答案 1 :(得分:0)

我没有看到任何可以简化它的方法。只是让它更具可读性。

也许你可以改善你的循环。

var rsrHoversRed = [t1, t2, t3, t4];

for (var i = 0, len = rsrHoversRed.length; i <= len; i++) {
  var el = $(rsrHoversRed[i]);

  el.hover(function(){
      this.attr({
        cursor: 'pointer',
        fill: '#8b2332',
      }).addClass('hovered');
      }, function() {
      this.attr({
        fill: '#e6e6e6'
      }).removeClass('hovered');
  });
}

它会删除您的tx.hover(func..代码。

答案 2 :(得分:0)

另一种选择:

//////////////////////////
// bind both hovers
$('li').hover(function() {
if($(this).attr("id") == "t1") {
  t1.attr({
    fill: '#8b2332'
  });
}
if($(this).attr("id") == "t2") {
  t2.attr({
    fill: '#8b2332'
  });
}
if($(this).attr("id") == "t3") {
  t3.attr({
    fill: '#8b2332'
  });
}
if($(this).attr("id") == "t4") {
  t4.attr({
    fill: '#8b2332'
  });
}
}, function() {
  t1.attr({
    fill: '#e6e6e6'
  });
  t2.attr({
    fill: '#e6e6e6'
  });
  t3.attr({
    fill: '#e6e6e6'
  });
  t4.attr({
    fill: '#e6e6e6'
  });
});

t1.hover(function() {
  $('#t1').toggleClass('hovered');
});

// tn hover

t2.hover(function() {
  $('#t2').toggleClass('hovered');
});

t3.hover(function() {
  $('#t3').toggleClass('hovered');
});

t4.hover(function() {
  $('#t4').toggleClass('hovered');
});