2011-10-14 77 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