addClass()在mouseenter()中不起作用
addClass() not working in mouseenter()?
我有一个mouseenter函数,它将选定的div变成红色和1不透明度。我有一个类"full",它就是这样做的,但当我在mouseenter中添加该类时,div不会改变颜色。相反,如果我添加红色,并用this.style.color和this.style.opacity更改鼠标中心内的不透明度,那么它似乎可以工作。我的问题是为什么?
jquery(不工作):
$('.content').mouseenter(function() {
$( ".content" ).each(function (i) {
if ( this.style.color != "#F7F7F7" ) {
this.style.color = "#F7F7F7";
this.style.opacity = "0.5";
}
});
this.addClass('full');
});
jquery(正在工作):
$('.content').mouseenter(function() {
$( ".content" ).each(function (i) {
if ( this.style.color != "#F7F7F7" ) {
this.style.color = "#F7F7F7";
this.style.opacity = "0.5";
}
});
this.style.color = "red";
this.style.opacity = "1";
});
CSS:
.full
{
color: red;
opacity: 1;
}
this
不是mouseenter
方法回调中的jquery集合。您需要使用$(this)
。
有几个问题;一个是this
不是处理程序中的jQuery对象。另一个是您的style
规则将始终优先于类*。我真的不知道上下文是什么,但似乎你应该默认地让它们都是那样的颜色,并添加和删除类:
var $content = $('.content');
$content.mouseenter(function() {
$content.removeClass('full');
$(this).addClass('full');
});
尽管让你的CSS看起来应该少.full
,多:hover
,根本没有JavaScript。(这是最好的JavaScript。)
*没有!important
,您永远不应该使用它
this
应该像jQuery(this)
一样使用。
用途:
$('.content').mouseenter(function() {
$( ".content" ).each(function (i) {
if ( this.style.color != "#F7F7F7" ) {
this.style.color = "#F7F7F7";
this.style.opacity = "0.5";
}
});
jQuery(this).addClass('full');
});
您正在使用javascript设置内联样式。这些总是会否决类样式。
相关文章:
- $animate addClass在angular 1.3中不起作用
- jQuery.addClass()不起作用
- JQuery addclass 在 AJAX 调用上不起作用
- jQuery AddClass 方法不起作用
- addClass 不起作用,尝试根据 URL 添加类
- jQuery - 'addClass' to HTML 元素 - 不起作用,但在 Chrome 中正确显
- .addClass() 在使用 if-语句时不起作用
- JQuery addClass 在 Firefox 中不起作用
- addclass 函数在 Firefox 和 IE 中不起作用
- jQuery .addclass 在 wordpress 中不起作用
- 简单的jQuery addClass()似乎不起作用
- jQuery addClass 在 IE 7 或 IE 8 中不起作用
- $(this).addClass不起作用
- DOM元素addclass在IE7中不起作用
- Delegate和AddClass不起作用
- addClass()不起作用
- addClass()在mouseenter()中不起作用
- toggleClass做'不起作用,但addClass起作用
- .addClass()在JS Fiddle之外不起作用
- 为什么addClass()不起作用?使用mCustomScrollbar