Javascript jQuery事件冒泡,live(),单击事件不传播

Javascript jQuery事件冒泡,live(),单击事件不传播,javascript,jquery,jquery-events,Javascript,Jquery,Jquery Events,我有两个容器,一个在页面加载之前不会生成。最后生成的()应显示在第一个上。从视觉上看,它确实掩盖了第一个。但是,我无法获取“.last”来响应live()click事件。它将响应第一个div,但不会响应最后一个div(同样,是在前景中直观显示的div)。这让我抓狂,页面上没有其他点击事件。需要说明的是,这是我的页面: <body> <div class="first">First div</div> <script type=&quo

我有两个容器,一个在页面加载之前不会生成。最后生成的(
)应显示在第一个上。从视觉上看,它确实掩盖了第一个。但是,我无法获取“.last”来响应
live()
click事件。它将响应第一个div,但不会响应最后一个div(同样,是在前景中直观显示的div)。这让我抓狂,页面上没有其他点击事件。需要说明的是,这是我的页面:

<body>
<div class="first">First div</div>
<script type="text/javascript">
// This works
 $('body').append($('<div/>').addClass('last').text('last div')); 
//This does not
 $('.last').live('click', function(e) {
      alert('hello');
 }); 
</script>
</body>
第一个div,没有CSS

编辑:我的DOM结构比上面的例子要复杂一些。我确信div“last”是可见的并且在顶部。以下是项目的实际DOM结构:

<div>
 <button> (when button is pressed last is created)
  <span>
   <div>
    <div class="last"></div>
   </div>
  </button>  
 </div>
 <table>
  <thead>
   <tr>
    <td><div class="first"></div></td>
   </tr>
  </thead>
 </table>

(当最后按下按钮时,创建)
我相信我找到了答案,直到我把整棵树都贴出来才意识到这一点。我觉得自己很愚蠢。“button”div正在停止传播,因为它附加了一个jQueryUI事件。无论出于何种原因,在Chrome和Firefox上都不会呈现状态变化(即显示按钮被按下)。这是因为“last”div不在按钮上及其下方。然而,就事件而言,它停在按钮上。奇怪的是,IE8会显示按钮被按下(事件触发),这导致人们意识到这就是错误所在。我完全忘记了jQueryUI是挂在按钮上的,这可能会显示div,也可能会阻止它显示。将div移到按钮外解决了问题


如果jQuery有某种实时日志,您可以看到整个事件向上冒泡,那就太好了。

您需要在
$(body)
块中的
body
周围加引号,因为没有名为
body
的变量

$('body').append($('<div/>').addClass('last').text('last div')); 
$('body').append($('').addClass('last').text('last div');
.live()
应该能用

尝试向该
div
添加边框,看看该
div
是否真的存在


你试过了吗


对我来说,这是草率的复制编辑,我没有校对“ThisWorks”部分的代码。谢谢你指出这一点。是的,它看起来确实有效。我试图复制您的问题,但失败:@KieselguhrKid您是否遗漏了其他可能导致此问题的内容?您是否可以发布放置div的css?尝试将绝对div
设置为左:0
顶部:0
,以及更高的
z-index
,然后在该绝对div的父级上设置
位置:相对
。。
$('body').append($('<div/>').addClass('last').text('last div')); 
$('body').delegate('.last', 'click', function(){
    alert('hello')
});