我有一个表,其中某些功能在点击每行链接时触发:
代码的相关部分是:
$('.my_table').inplacerowedit({
url: myurl,
});
在inplacerowedit.js文件中,我有:
(function($) {
$.fn.inplacerowedit = function(options) {
var ops = $.extend({}, $.fn.inplacerowedit.defaults, options);
$(this).find(ops.editbuttonselector).on('click', function(e) {
... }
ops.editbuttonselector = 'a.edit'
我的表每行都有一个编辑链接,它通常正常工作。我的问题是新创建的行。
以下是我创建一行并将其添加到表中的方法:
new_row = null
getNewRow = function() {
if (new_row == null){
new_row = $("<tr>");
columns = {'name':'','type':'','value':'','edit':'','delete':''}
for (var column in columns)
new_row.append( $("<td>").addClass(column).text(columns[column]));
links = ['edit','delete']
for (var i=0;i<links.length;i++){
link = links[i]
a = $("<a href='"+link+"' class='"+link+"'>").text(link);
new_row.find("."+link).append(a)
}
}
return new_row
};
$("#addRowAndEdit").click(function(e){
e.preventDefault();
var row = getNewRow();
$(".my_table").append(row);
new_record = $('.my_table tbody>tr:last');
new_record.find('a.edit').click(); //this is the line that is not working.
....
}
更新:
如果我new_record.find('a.edit').on('click', alert('ok'));
,则警报功能正常,但另一个不会被调用。
有什么想法吗? 感谢
答案 0 :(得分:3)
使用event delegation以便新添加的行由附加到表的处理程序处理,而不是将其附加到每个单独的a
元素,为此,替换{{1}中的以下行}:
inplacerowedit.js
这个:
$(this).find(ops.editbuttonselector).on('click', function(e) {
EDITED
答案 1 :(得分:0)
如果你使用1.6+的最新jquery版本,那么你应该试试这个:
new_record.find('a.edit').live('click',function(){
// All your desired stuff here
});
试着看看这是否适合你。
Just because you are dynamically creating the rows
,对于这种情况.live()
事件处理程序很有用。
您可以在此处找到更多信息:http://api.jquery.com/live/
答案 2 :(得分:0)
我必须进行2次更改: 一个是尼尔森建议的(出于某种原因,我第一次尝试他的建议,它打破了现有的链接),另一个像这样: new_record.find( 'a.edit')[0]。点击()
找到答案