2011-02-09 51 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()