这是我的代码:http://jsfiddle.net/XYbmE/75/
如果黑盒子在那里,我希望div#first
保持蓝色。仅当我点击div#first
时才会出现黑匣子。如果我点击其他任何地方,应该隐藏黑盒子,div#first
应该是红色的。
我该怎么办?
答案 0 :(得分:5)
这看起来像是班级的工作!
触发点击事件后,将一个类添加到与#first
具有相同CSS的:hover
。
div#first:hover,div#first.hover{
width:200px;
height:200px;
background-color:blue;
}
然后,点击添加课程:
$('#first').click(function() {
$(this).addClass('hover');
$('#second').show();
});
当您点击其他地方时,删除课程和黑匣子:
$('body').click(function(e) {
if(!$(e.target).is('#first')){
$('#first').removeClass('hover');
$('#second').hide();
}
});
答案 1 :(得分:3)
以下是更新jsFiddle:http://jsfiddle.net/XYbmE/87/
<强> JS 强>
// This will take care of restoring the boxes
// when user clicks outside the boxes
$(document).click(function() {
$('#first').removeClass('active');
$('#second').hide();
});
// This will add an "active" class and prevent
// the above code from being triggered when
// the box is clicked.
$('#first').click(function(e) {
e.stopPropagation();
$(this).addClass('active');
$('#second').show();
});
<强> CSS 强>
/* Have #first.active:hover look/behave the same as #first */
div#first:hover, div#first.active {
width:200px;
height:200px;
background-color:blue;
}
答案 2 :(得分:2)
此外,对于第二个问题,您需要在document.click上添加一个小脚本来隐藏和删除类。
$('#first').click(function(e) {
$(this).addClass('hover');
$('#second').show();
//stop bubbling
e.stopPropagation();
});
$(document).click (function (e) {
if (this.id == 'first') {
return;
}
$('#first').removeClass('hover');
$('#second').hide();
});
DEMO 此处