2011-02-09 50 views
1

此代码不能按预期工作:所有这些元素后Click事件不触发之后添加跨度

function makeToken() 
    { 
    var $span = $("<span>new</span>"); 

    $span.bind('click',function(){ 
     alert('test'); 
    }) 


    return $span; 
} 

$('h1, #content p, #content h2').after(makeToken()); 

span元素将出现(“H1,#内容P,#内容H2”),但当我点击跨度时,点击事件不会被触发。为什么不?解决办法是什么?

回答

0

追加了您创建的<span>元素的副本。它应该执行.clone(true),以便处理程序也被克隆。

看起来像一个错误,但似乎在jQuery 1.5修复。

例子:http://jsfiddle.net/7PUew/1/

你可以使用事件委派,而不是直接结合,但需要更多的信息,知道最好的办法。

+0

不确定,但在尝试将事件绑定到文档之前,您可能需要将该元素添加到文档中,或者您可以使用live(),如其他答案中所建议的,它会自动绑定任何新的匹配项。 – 2011-02-09 00:21:35

1

使用live()而不是bind()