gpt4 book ai didi

jquery stopPropagation问题与live方法

转载 作者:行者123 更新时间:2023-12-03 22:55:49 25 4
gpt4 key购买 nike

Jquery stopPropagation 方法不适用于 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>

谢谢你,确保。

最佳答案

您只需稍微更改处理程序的顺序,并使用/检查传播停止,如下所示:

$("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");
});​

Give it a try here ,有几个要点需要牢记:

  • .live()处理程序位于文档
  • 事件处理程序按照它们绑定(bind)到任何给定元素的顺序执行

您需要停止并检查传播,因为我们处于同一级别。 .stopPropagation()会阻止冒泡变得更高,但这并不重要,它在 DOM 中处于同一级别,因此您需要使用 .isPropagationStopped() 检查它是否已停止。 。另外,由于处理程序按顺序触发,因此您需要将 document.onclick 绑定(bind)在其他事件处理程序之后,否则它将在其他事件处理程序尝试停止之前首先执行传播。

关于jquery stopPropagation问题与live方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3353275/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com