我怎样才能缩短这个功能(addClass,attr)
How can I shorten this function (addClass, attr)
如何缩短以下代码,而 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];
这可能吗?
// 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');
});
我看不出有什么方法可以进一步简化它。让它更具可读性。
也许你可以改进你的循环。
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..
代码。
还有一个选择:
//////////////////////////
// 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');
});
如何缩短以下代码,而 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];
这可能吗?
// 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');
});
我看不出有什么方法可以进一步简化它。让它更具可读性。
也许你可以改进你的循环。
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..
代码。
还有一个选择:
//////////////////////////
// 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');
});