2013-07-18 33 views
1

對於粗糙的例子,我有一個表當通過使用Javascript創建的新元素,標籤不會工作

<table> 
<tr> 
    <td>wangel</td> 
    <td>tamang</td> 
    <td><a class="edit">edit</a></td> 
</tr> 
</table> 

當我點擊編輯,我使用的功能使用j個查詢,使用Ajax然後調用函數,用PHP編輯查詢,然後返回已編輯的新行。

<tr> 
    <td>wangelpakhrin </ td> 
    <td>tamang</td> 
    <td><a class="edit">edit</td> 
</tr> 

然後,使用replace With()替換舊的。 現在,問題是新的編輯不會觸發我在腳本中創建的函數,否則它會刷新頁面。 我確實使用了live()或on(),但它仍然刷新頁面。 什麼可以解決它?這將是非常有益的感謝。

腳本代碼

$("a.edit").on("click",function(e) { 
     e.preventDefault(); 
     var id = $(this).attr("value"); 
     var parent = $(this).parent(); 
     $.post("../lib/ajax/edit-user.php",{id:id},function(data){ 

      parent.parent().replaceWith(data); 


      }); 


}); 
+0

這是很難幫助沒有你的jQuery代碼,你需要共享的編輯處理程序是怎麼寫的 – anu

+0

但問題不使用事件代表團 –

+0

具有u嘗試添加'e.preventDefault();'? – anu

回答

3

我假設你的表是固定的,你加table.Then內TR使一類像

<table class="my_table"> 
<tr> 
    <td>wangel</td> 
    <td>tamang</td> 
    <td><a class="edit">edit</a></td> 
</tr> 
</table> 

現在你。對你的表的標籤像

$(".my_table").on('click',".edit",function(){ 

    //your work 
}); 

功能,請讓我知道的狀態。

+0

非常感謝你aritra chakarborty,現在on()工作正常。我添加了表格類名稱和編輯工作正常...你節省了我的時間.. –

+0

我很高興它幫助你。 – ABorty

0

你可以更新你的而不是取代這樣才內容:

$("a.edit").on("click",function(e) { 

var id = $(this).attr("value"); 
var parent = $(this).parent(); 
$.post("../lib/ajax/edit-user.php",{id:id},function(data){ 

    parent.parent().empty().html(data); 


    }); 
}); 

你的數據必須以S的形式返回。

data=" <td>wangel New</td><td>tamang new</td><td><a class="edit">edit</a></td>" 
+0

空或更換工作正常。現在當我點擊新行的標籤時,它不會觸發a.edit函數 –

相關問題