2013-03-16 95 views
0

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

当我点击按钮时,我想要将指针悬停在显示答案和提交选项卡上并在再次单击时将鼠标指针以及背景颜色更改,然后再次将其恢复为默认值state.Right现在,我只能改变指针。

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的 $( '按钮')点击(函数(){ $( '#showanswer,#提交')toggleClass( '悬停')。; });

$('.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; 
} 
+3

解释你的问题,并张贴代码,*在你的问题*。 JS小提琴是一个奖金,但问题应该是孤立的(尽管说明性的演示/复制是非常有用的)。 – 2013-03-16 13:53:30

回答

2

你可以用这个简单的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/

+0

是的,我需要的JavaScript解决方案。非常感谢!但是,你能解释为什么我的代码无法工作吗? – Ronophobia 2013-03-16 14:01:45

+1

因为事件未附加到没有“悬停”类的行。当您稍后添加它时,您必须再次重新绑定事件或使用'on'使用委派。 – dfsq 2013-03-16 14:05:16

+0

谢谢,我明白了! +1作为完整答案。 – Ronophobia 2013-03-16 14:10:35

1

由于dfsq指出,要做到这一点最简单的方法是简单的通过CSS。但是,代码不起作用的原因是mouseovermouseout方法仅适用于执行时执行这些方法的hover的元素。这些事件符号是而不是追溯附加到符合原始选择标准的新元素。要应用事件处理程序代码晚些时候获得该类元素,使用.on method的变化,像这样:

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

谢谢!但是我不得不选择dfsq的答案,因为他是第一个回答的。尽管你得到+1了:) – Ronophobia 2013-03-16 14:09:33

相关问题