2011-10-14 110 views
1

我有HTML,我需要在表中附加一行動態,也需要捕獲附加div類中的點擊事件。如何實現這個任何想法?點擊事件不工作在jQuery

的JavaScript:

$(document).ready(function() { 

    $("#click").click(function() { 
     $('table').prepend('<tr> <td>something3</td> <td> <a><div class="s"> s </a> </td></tr>'); 
    }); 


    $(".s").click(function() { 
     alert("Ok"); 
    }); 

}); 

HTML:

<input type="button" id="click" value="click"/> 

<table width='100%'> 
    <tr><td>something</td><td>else here</td></tr> 
    <tr><td>something2</td><td>else here2</td></tr> 
    <tr><td>something3</td><td>else here3</td></tr> 
</table> 
+0

你追加的HTML代碼是一團糟。你需要修復它。 – ThiefMaster

回答

4

live()方法,它可以讓你的事件綁定在指定選擇器匹配的DOM所有當前和未來元素。

$(".s").live('click', function(){ 
    alert("Ok"); 

}); 

jQuery docs說:

附加一個處理程序的情況下爲當前選擇,滿足其所有元素現在和未來


注意,這回答是在2011年10月寫的,當時jQuery 1.6.4是國王。 live()已在1.7中棄用,有利於使用on()。現在等價的語法;

$(document).on("click", ".s", function(){ 
    alert("Ok"); 
}); 
+0

大多數jQuery專家推薦使用.delegate函數而不是.live函數:http://test.kingdesk.com/jquery/bind_live_delegate.php –

+0

正確,但我會添加,但委託被認爲是更快,更靈活(鏈 - 住)。 http://api.jquery.com/delegate/ – rdjs

+0

更新到我以前的評論,on()自從這個答案發布後推出http://stackoverflow.com/questions/8359085/delegate-vs-on – rdjs