2013-11-28 60 views
0

我正在开发一个简单的例子,使用Jquery的右键菜单。我正在使用JQuery ContextMenu。所以,我有一个简单的表和JSP代码generete细胞以这样的方式右键单击jquery菜单功能后重写表不工作

<div id="catS" class="pure-u-1-3"> 
<h4 class="l-box">Categorie</h4> 

<table class="pure-table pure-table-horizontal l-box" id="catAssociate"> 
<tbody> 
<%ObjectifyService.register(Categoria.class); 
List<Key<Categoria>> lCategorie=s.getCategorie(); 
if(lCategorie!=null){ 
for(Key<Categoria> k : lCategorie){ 
Categoria c= ofy().load().now(k); 
if(c!=null) 
    %><tr id="<%out.println(c.getId());%>" ><td id=" <%out.println(c.getId());%>" onclick="getSottocategorieDaC(this); getDispenseDaC(this)"><%out.println(c.getNome());%></td></tr> <% 
} 
}else{ 
%><tr><td>Nessuna categoria associata</td></tr><% 
} 
%> 
</tbody> 
</table> 
</div> 

所以在其他表,我可以在数据存储,并通过AJAX后我更新“catAsscoiate”表中添加元素。这些是我的功能:

这将项目添加到数据存储并重绘我的表格。

function AddAction(t, a) { 
$.ajax({ 
    url : 'studenteServlet?action=aggiungiC&ids='+$.urlParam('id')+'&idc='+t.id, 
    type : "POST", 
    async : false, 
    success : function(data) {   
     console.log(data); 
     $('#catAssociate tbody > tr').remove(); 
     var html = ''; 
     for(var i = 0; i < data.length; i++) 
        html += '<tr id='+data[i].id +'><td id='+data[i].id +' onclick="getSottocategorieDaC(this); getDispenseDaC(this)">' + data[i].nome + '</td></tr>'; 
     $('#catAssociate').append(html); 
    } 
}); 
} 

在添加动作之前,上下文菜单在catAssociate上工作,之后没有。这是代码:

$(document).ready(function() { 
$('#catAssociate tbody tr').contextMenu('myMenu2', { 
    bindings: { 
     'open': function(t) { DeleteAction(t, "Open"); }, 
    } 
    ... 

任何人都可以解释我为什么?

谢谢!

回答

0

当您使用$('#catAssociate')。替换所有的html。append(html);您可以有效地移除/丢失附加到刚刚删除的旧内容的所有事件绑定。

所以只是重新应用在重建DOM在你成功后的功能:

$('#catAssociate').append(html); 

$('#catAssociate tbody tr').contextMenu('myMenu2', { 
    bindings: { 
    'open': function(t) { DeleteAction(t, "Open"); }, 
} 
+0

它的工作!非常感谢! – Frank