点击功能不起作用
我有一个表,我可以使用这样的克隆函数添加行:
new_row = $(table_id+' tbody > tr:last').clone(true).removeAttr('id').insertAfter(table_id+' tbody > tr:last');
每行都有特殊的单元格,其内容手动创建如下:
$(new_row).children('.action_2').html('<a class="row_delete"><img src="/images/pack/cross.png" alt="Cancel" /> Cancel</a>');
问题是函数 $('.row_delete').click(function(){。 ..})
不适用于此动态添加的行,出了什么问题?
I have a table where i can add rows using clone function like this:
new_row = $(table_id+' tbody > tr:last').clone(true).removeAttr('id').insertAfter(table_id+' tbody > tr:last');
each row have special cell which content creates manualy like this:
$(new_row).children('.action_2').html('<a class="row_delete"><img src="/images/pack/cross.png" alt="Cancel" /> Cancel</a>');
The problem is that function $('.row_delete').click(function(){...})
is not working with this dynamically added rows, what's wrong?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
stuff/}); )(要删除处理程序,请使用 .die() )
您需要使用 .live 函数 ( .live('click', function(e){ / 这就是绑定,将单击处理程序添加到指定的每个元素(在示例中使用 .row_delete 类),并且稍后添加的元素不受影响。
Live(),将处理程序绑定得更高,然后检查注册的单击是否发生在指定元素之一中。
请记住,如果元素上有另一个指定的处理程序,这会阻止事件的传播(或 IE 语言中的冒泡),则不会调用 live() 的回调。
You need to use the .live function ( .live('click', function(e){/stuff/}); ) (and to remove the handler, use .die() )
Reason for this is that bind, adds a click handler to every element specified (with the .row_delete class in your example), and the elements that are added later, are unnafected.
Live(), binds the handler much higher, and then checks if the registered click happened in one of the specified elements.
Keep in mind that if there is another specified handler on the element, that prevents propagation of the event (or bubbling in IE language) then live()'s callback won't be called.
单击功能在页面加载时应用于具有该类的行。
您必须使用 live() 方法才能使其正常工作:
http://api.jquery.com/live/
通过 live,您可以使在页面的整个生命周期内与给定模式匹配的所有元素都具有相同的行为。
应该可以做到这一点。
The click function is being applied to the rows with that class at the page load.
You have to use the live() method to get that working:
http://api.jquery.com/live/
With live you can make that all the elements that match a given pattern during the entire life of the page have the same behavior.
That should do it.
例如,使用 jQuery live 方法来分配事件,
因此当您在该位置添加时,新的 tr 事件将附加到它。
use jQuery live method to assign events, for example
so when ever you add at that place new tr event will be attached to it.
使用
.live()
或.delegate()
而不是.click(...)
。事件绑定代码将如下所示
Use
.live()
or.delegate()
instead of.click(...)
.The event binding code would then look like