Jquery stopPropagation方法不适用于live方法.下面的代码可以正常使用click而不是live方法.任何帮助非常感谢.
<!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=iso-8859-1" />
<title>Jquery Propagation and preventDetauls Example for Popup</title>
<style type="text/css">
.icon.white{background:#FFFFFF;}
.icon{-moz-border-radius:2px 2px 2px 2px;-moz-box-shadow:0 1px 2px #EAEDF4;background-color:#FFFFFF;border:1px solid #E4E8F1;float:left;margin:0 1% 1% 0;text-align:center;}
.iconlinks{height:20px;}
.info{float:right;}
.icon a.infolink, .downloadlinks a, .iconza a.changecolor {color:#718DB5;display:block;font-size:10px;padding:4px 7px;text-decoration:none;}
.icon .infolink {background-image:url(images/dwn-arrow.gif);background-position:35px center;background-repeat:no-repeat;padding-right:17px !important;position:relative;}
.downloadlinks{float:left;width:130px;overflow:hidden;}
.downloadlinks a{float:left;}
.infolink:hover{background-image:url(images/arrow-white.gif);}
.infolink:hover{background-color: #1f75cc;color: white !important;text-decoration: none !important;}
.infolink.selected{z-index: 100;color: white !important;background-color: #1f75cc !important;background-image: url(images/arrow-white.gif) !important;}
.icon-image{border:0px;}
.service-name{font-family:Arial, Helvetica, sans-serif;font-size:14px;line-height:24px;color:#74767A;margin:3px;text-align:left;}
.describe-icons{position:absolute;right:2px;bottom:2px;}
.infomenu{text-align:left;margin-left:-150px;margin-top:-1px;position:absolute;width:260px;-moz-box-shadow:2px 2px 5px #2F3B4A;background-color:#FFFFFF;border:2px solid #1F75CC;z-index:50;}
</style>
<script type="text/javascript" src="js/jquery-1.4.2.min.js"></script>
<script type="text/javascript">
$(function(){
$(document).click(function(){
$("a.infolink").removeClass("selected");
$("div.infomenu").hide();
});
$("a.infolink").live("click",function(e){
$("a.infolink").removeClass("selected");
$("div.infomenu").hide();
$(this).addClass("selected");
$(this).next().show();
e.stopPropagation();
});
$("div.infomenu").live("click",function(e){
e.stopPropagation();
//e.preventDefault();
});
$("input.clickme").click(function(e){
alert("I am fired");
});
});
</script>
</head>
<body>
<div id="tserviceslist" style="margin:25px;">
<div style="height: 178px; width: 178px;" id="icon-12608" class="icon white">
<div class="iconlinks">
<div class="info">
<a href="#" class="infolink" title="Click here to see more information about this Services." rel="nofollow">INFO</a>
<div id="infomenu-12608" class="infomenu" style="display: none;"><input type="button" value="clickme" class="clickme" />Information will come here</div>
</div>
<div class="downloadlinks">
<h3 class="service-name">Cricket</h3>
</div>
</div>
<br />
</div>
</div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
谢谢你,当然.
Nic*_*ver 15
您只需稍微更改处理程序的顺序,并使用/ check进行传播停止,如下所示:
$("a.infolink").live("click",function(e){
$("a.infolink").removeClass("selected");
$("div.infomenu").hide();
$(this).addClass("selected");
$(this).next().show();
e.stopPropagation();
});
$("div.infomenu").live("click",function(e){
e.stopPropagation();
});
$(document).click(function(e){
if(e.isPropagationStopped()) return; //important, check for it!
$("a.infolink").removeClass("selected");
$("div.infomenu").hide();
});
$("input.clickme").click(function(e){
alert("I am fired");
});?
Run Code Online (Sandbox Code Playgroud)
在这里尝试一下,有几点要记住:
.live() 处理程序正在运行 document你需要停止并检查传播,因为我们处于同一水平. .stopPropagation()可以防止冒泡进入任何更高但是无关紧要,它在DOM 中处于同一级别,因此您需要检查它是否已停止使用.isPropagationStopped().此外,由于处理程序按顺序触发,您需要document.onclick 在其他事件处理程序之后绑定它,否则它将首先执行,然后其他事件尝试停止传播.
| 归档时间: |
|
| 查看次数: |
5502 次 |
| 最近记录: |