我有一组div,我会在点击时显示,然后在右上角用“X”img关闭。我的问题是,点击div中的任何地方会导致它关闭,而不仅仅是右上角的X.我还想让“X”成为一个链接,这样当它悬停在光标上时会发生变化。代码如下,谢谢!
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js"></script>
<style type="text/css">
.county{
color:blue;
display:block;
}
.countystats{
background-image:url('../defunkt-facebox-cbe32e1/examples/closelabel.png') ;
background-position:top right;
border:3px black inset;
background-repeat:no-repeat;
background-color:#ccc;
display:none;
right:250px;
margin: 5px 5px 5px 5px;
padding:5px 5px 5px 5px;
width:200px;
}
</style>
</head>
<body>
<div style="height:250px;bottom:300px; width:100px; padding: 1em; overflow:auto; margin:5px 5px 5px 5px; border: 2px black; overflow-x:hidden;">
<a class="county" href="#">one</a>
<a class="county" href="#">two</a>
<a class="county" href="#">three</a>
<a class="county" href="#">four </a>
<a class="county" href="#">five</a>
<a class="county" href="#">six</a>
</div>
<div class="countystats">stats one<input maxlength="20" size="14" type="password"/><br/><p>woot</p></div>
<div class="countystats">stats two</div>
<div class="countystats">stats three</div>
<div class="countystats">some other stuff</div>
<div class="countystats">even more other stuff</div>
<br />
<br />
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js"></script>
<script type="text/javascript">
$('a.county').each( function(e){
$(this).bind('click', function(e){
var thisIs = $(this).index(); $('.countystats').eq(thisIs).show (250);
});
$("img").hide();
$(".countystats").click(function () {
$(this).hide(250);
return true;});
});
</script>
</body>
</html>
答案 0 :(得分:3)
它表现得那样,因为你选择了整个div选择器。相反,将嵌套的div设置为X图像的大小,将其浮动到右侧,然后将close事件绑定到该图像。如果您使用浮动或相对定位,您应该能够避免弄乱其余的布局。
编辑:更好的是,尝试jqueryUI对话框小部件。它或多或少地完全符合您的要求,并自动处理关闭功能。
答案 1 :(得分:0)
您可以识别元素内部发生单击的位置,如果匹配关闭区域的位置,则隐藏元素。
此代码为:
var _closeButtonWidth = 50;
var _closeButtonHeight = 20;
$(".countystats").click(function(event) {
event = event || window.event;
var xPos = event.offsetX || event.clientX - $(this).offset().left;
var yPos = event.offsetY || event.clientY - $(this).offset().top;
var width = $(this).width();
var height = $(this).height();
if (xPos >= (width - _closeButtonWidth) && yPos <= (height - _closeButtonHeight)) {
$(this).hide();
}
});
只需定义X
图标的宽度和高度即可。
实时测试案例:http://jsfiddle.net/nmEB6/1/
(在Chrome 10,Firefox 3.6和IE8上测试,只需点击绿色div
的右上角)