jQuery在鼠标输入时更改css,但仅输入内容而不是全部
jQuery change css when mouseenter but only entered content not all
我有一个简单的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
。我搜索了很多,但无法解决这个问题
附言 .我添加了我想要实现的目标的图像:图片链接
只需使用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
将是穆斯切德/穆斯左 DOM 元素。
你想改变输入的div(.left-menu)?还是包含的div(.left-menu-top)?
在第一种情况下:
$(this).css....
第二种情况:
$(this).closest('.left-menu-top').css(...
jquery .closest()
您想为输入项目的父项提供边框吗?
$(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()
方法,因此它只是一个微优化。
但是,您应该考虑的是,较旧的浏览器版本需要前缀,即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 文件中,并减少浏览器需要执行的处理量。
不要试图用信息让你超载,只是提供选项。
相关文章:
- 为什么不't Javascript对我的输入值进行了一些重新检查
- 可以't让我的if语句处理js中的html表单输入
- 名称输入的索引
- 如何编写HTML输入的JS内联
- 要求输入在数据列表中
- 将输入字段中的文本提交到我的数据库,同时将其添加到我的列表中
- 让文本输入幻灯片显示输入时的新文本输入?然后向后滑动
- 如何将输入(type=text)从html表单传递到javascript函数
- 单击jquery清除输入值
- 而循环只设置php中输入字段中的第一个值
- 在输入字段中将最小金额设置为
- jQuery自定义验证比较多个输入的序列
- Sails.js:同时发布文本输入和一个文件
- 使用javascript检查多个输入值,并在1次检查中标记多个输入框
- 如何在输入字段中的按钮的帮助下打开日历,该字段的类型为“=”;日期”;
- 使用jquery在单击时在单元格中输入值
- 检查 2 个输入字段和一个选择字段,以便在它们全部填写后进行更改
- jQuery在鼠标输入时更改css,但仅输入内容而不是全部
- 在输入字段中选择一些文本,但不是全部,当它被聚焦时
- 字符串解析——为什么在javascript中将输入数组元素全部解析为整数时会出现运行时错误