2013-11-28 82 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