2016-11-08 74 views
0

当您用js.erb重新渲染局部时,dom会发生什么变化?我无法再获得点击事件。渲染js.erb时不会发生点击事件

基于this tutorial,我跟着它重新渲染一个js.erb部分工作正常。当我点击“cat.name”按钮(在链接页面上),并且在该页面上是另一个按钮,我正在监听点击事件但不工作。

运行:

在索引页上,单击事件工程。当我提出from_category的请求时,不再有点击事件。那么究竟发生了什么?

HTML:

<button id="test" value="ok">click</button> 

JS:

$("#test").on("click", function(e) { 
    console.log(e.target.value) 
}); 

回答

2

您单击事件不绑定到新的DOM元素,你应该使用event delegation泡事件到新创建的DOM元素

$('body').on('click input keypress','.the_dynamic_element',function(){ 

}); 
+0

所以基本上我应该有这个'$(“#test”).on(“click”,“button”,function(e){...})?不起作用。 – Sylar

+0

哦!我需要瞄准身体?这是一个好方法吗? – Sylar

+0

不是由ajax添加的最近的元素 – madalinivascu

1

无需绑定身体上的事件,您可以使用此格式绑定前夕nt到选择器

$(document).on('click', '#test', function(e) { 
    console.log(e.target.value) 
});