您想为输入的项目的父项添加边框吗?
$(function(){
$('.left-menu').on({
mouseenter:function(){
$(this).parent().css({borderRadius:'0px 25px 0px 0px'});
},
mouseleave:function(){
$(this).parent().css({borderRadius:'25px 0px 0px 0px'});
}
});
});
您可以将您的绑定合并到一个.on()
绑定中(减少 DOM 查询是提高 jQuery 性能的最佳方式),然后只影响输入项的父项(使用this
表示输入的特定元素)。我也改成"border-radius"
了borderRadius
原生 DOM 对象,因为它比解析字符串要快。您已经在使用基于对象的.css()
方法,所以它只是一个微优化。
不过,您应该考虑的是,较旧的浏览器版本需要前缀,即 Firefox < 3.6 和 Safari < 4。这应该适用于所有可能的版本:
$(function(){
function setBorderRadius($this,radVal){
$this.parent().css({
borderRadius:radVal,
WebkitBorderRadius:radVal,
MozBorderRadius:radVal
});
}
$('.left-menu').on({
mouseenter:function(){
setBorderRadius($(this),'0px 25px 0px 0px');
},
mouseleave:function(){
setBorderRadius($(this),'25px 0px 0px 0px');
}
});
});
注意函数的使用。这将涵盖所有基于 CSS 的基础,但也会使逻辑更具可扩展性。现在,如果您以后需要影响border-radius
某些东西,您只需将新项目输入到函数中即可。
更好的方法是为每个类创建一个新的 CSS 类:
.MouseEnter {
border-radius-to:0 25px 0 0;
-webkit-border-radius:0 25px 0 0;
-moz-border-radius:0 25px 0 0;
}
.MouseLeave {
border-radius:25px 0 0 0;
-webkit-border-radius:25px 0 0 0;
-moz-border-radius:25px 0 0 0;
}
然后只需更改鼠标进入/离开的类:
$(function(){
$('.left-menu').on({
mouseenter:function(){
$(this).parent().addClass('MouseEnter').removeClass('MouseLeave');
},
mouseleave:function(){
$(this).parent().addClass('MouseLeave').removeClass('MouseEnter');
}
});
});
这样适当地把 CSS 的负担放在 CSS 文件中,把 JS 的负担放在 JS 文件中,减少浏览器需要执行的处理量。
不要试图让信息过载,只是提供选项。