我有一个像这样简单的jQuery:
$(function () {
$('.left-menu').mouseenter(function () {
$('.left-menu-top').css({
"border-radius": "0px 25px 0px 0px"
})
});
$('.left-menu').mouseleave(function () {
$('.left-menu-top').css({
"border-radius": "25px 0px 0px 0px"
})
});
});
和HTML:
<div class="left-menu-total">
<div class="left-menu"></div>
<div class="left-menu-top">
Title
</div>
<div class="left-menu"></div>
<div class="left-menu"></div>
</div>
我想仅更改输入的div
的样式,而不是每个div
。我搜索了很多,但无法解决这个问题
PS。我添加了一个我想要实现的图像: image link
答案 0 :(得分:0)
只需使用this
$('.left-menu').mouseenter(function () {
$(this).css({"border-radius":"0px 25px 0px 0px"})
});
$('.left-menu').mouseleave(function () {
$(this).css({"border-radius":"25px 0px 0px 0px"})
});
this
将是mousentered / mousleft DOM元素。
答案 1 :(得分:0)
您想为输入项目的父级提供边框吗?
$(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"
更改为本地DOM对象borderRadius
,因为它比需要解析字符串更快。您已经在使用基于对象的.css()
方法,因此它只是一个微优化。
$(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负担,并减少了浏览器需要执行的处理量。
不要试图让信息过载,只提供选项。
答案 2 :(得分:0)
您要更改输入的div(.left菜单)吗?或包含div(.left-menu-top)?
在第一种情况下:
$(this).css....
第二种情况:
$(this).closest('.left-menu-top').css(...