【问题标题】:jQuery: Using mouseover and mouseout in combination with toggleClassjQuery:将 mouseover 和 mouseout 与 toggleClass 结合使用
【发布时间】:2013-03-16 13:52:32
【问题描述】:

我正在构建一个小型 Web 应用程序,其中有一些可点击区域和一些不可点击区域。当用户的鼠标指针位于可点击区域上时,该区域会突出显示并且指针变为手形。我也有一些区域最初是不可点击的,然后一旦点击按钮就会变成可点击的,反之亦然。我在这些区域使用toggleClass 方法。但我似乎无法在这些特定区域使用mouseovermouseout 方法。

当我单击按钮时,我想更改鼠标指针以及将指针悬停在“显示答案”和“提交”选项卡上并再次单击时的背景颜色,我想将它们恢复为默认状态.现在只能改指针了。

HTML

<div id="help" class="hover">Help</div>
<div id="switchplayer" class="hover">Switch to Two player</div>
<div id="showanswer">Show Answer</div>
<div id="submit">Submit</div>
<div id="start" class="hover">Start</div>

<button>Click me!</button>

jQuery $('button').click(function() { $('#showanswer,#submit').toggleClass('hover'); });

$('.hover').mouseover(function() {
   $(this).css('background-color','red'); 
}).mouseout(function() {
       $(this).css('background-color',''); 
});

CSS

div {
border:1px solid black;
}

.hover {
    cursor:pointer;
    cursor:hand;
}

【问题讨论】:

  • 解释您的问题,并发布代码,在您的问题中。 JS Fiddle 是一个奖励,但问题应该是独立的(尽管说明性演示/复制非常有帮助)。

标签: jquery html css


【解决方案1】:

你可以用这个简单的 CSS 做到这一点:

.hover:hover {
    background-color: red;
}

http://jsfiddle.net/cT3M9/3/

然后它将按预期工作。

如果您需要 javascript 来完成此任务,您应该使用 on 来委托事件:

$(document).on({
    mouseover: function() {
        $(this).css('background-color','red');
    },
    mouseout: function() {
        $(this).css('background-color', '');
    }
}, '.hover');

http://jsfiddle.net/cT3M9/6/

【讨论】:

  • 是的,我需要 javascript 解决方案。非常感谢队友!但是你能解释一下为什么我的代码不起作用吗?
  • 因为事件不会附加到没有hover 类的行。当您稍后添加它时,您必须再次重新绑定事件或使用on 的委托。
  • 谢谢我知道了! +1 以获得完整答案。
【解决方案2】:

正如 dfsq 所指出的,最简单的方法就是通过 CSS。但是,您的代码不起作用的原因是mouseovermouseout 方法仅适用于具有hover 类的元素在执行这些方法时。事件处理程序追溯附加到满足原始选择标准的新元素。要将您的事件处理程序代码应用于稍后获取该类的元素,请使用 .on method 的变体,如下所示:

$('body').on('mouseover', '.hover', function() {
    $(this).css('background-color','red'); 
}).on('mouseout', '.hover', function() {
    $(this).css('background-color',''); 
});

【讨论】:

  • 谢谢!但我不得不选择 dfsq 的答案,因为他是第一个回答的人。不过你会得到 +1 :)
猜你喜欢
  • 1970-01-01
  • 2011-03-03
  • 1970-01-01
  • 2014-03-09
  • 1970-01-01
  • 2013-02-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多