2014-11-21 85 views
1

每當我使用ajax從我的服務器獲取新的HTML,然後jQuery修改我的頁面上的當前HTML,插入的新jQuery不響應我在我的頁面上的JavaScript。插入的HTML沒有響應jQuery

例如,當我有這樣的代碼:

<td id="is_admin_14"> 
    <i class="fa fa-check-circle success"></i> 
    <a class="subtle-link demote-member" href="demote-link"> <small>Demote</small></a> 
</td> 

<script type='text/javascript'> 
$(document).ready(function($) { 

    function updateAdminStatus(url) { 
    $.post(url, function(data) { 
      console.log(data) 
      var cell = $('#is_admin_'+data.member_pk); 
      cell.html(data.html) 
     }).fail(function() { 
      // handle unexpected error here 
      alert("error"); 
     }); 
    } 

    $('.promote-member, .demote-member').click(function(event) { 
     event.preventDefault(); 
     updateAdminStatus($(this).attr('href')); 
    }); 

}); 
</script> 

和我點擊.demote交換機的鏈路,阿賈克斯後是送的,我得到的HTML回來了,我重新填充表格單元格與返回的HTML,它是這樣的:

<td id="is_admin_14"> 
    <i class="fa fa-times-circle danger"></i> 
    <a onclick="return false;" class="subtle-link promote-studio-member" href="promote-link"><small>Promote</small></a> 
</td> 

現在,當我點擊推廣工作室成員的鏈接,而無需重新加載頁面,jQuery的被完全忽略,並嘗試導航到HREF鏈接,因爲它如果沒有提供jQuery的話。我無法在同一頁面上繼續提升和降低自己的心願。 (另外請注意,我甚至試圖把onclick='return false;'放在那裏,但鏈接仍然會觸發。)

爲什麼會發生這種情況,並且有什麼辦法可以讓新的html響應jQuery?

回答

3

試試這個:

$(document).on("click",".promote-member, .demote-member ,.promote-studio-member",function(){ 
    event.preventDefault(); 
    updateAdminStatus($(this).attr('href')); 
}); 

由於html被添加到DO中M動態地,你需要處理它使用jQuery中的Event Delegation

+0

不爲我做。鏈接始終觸發 – rfj001 2014-11-21 07:22:15

+0

嘗試編輯的代碼。 – Jinandra 2014-11-21 07:31:29

+0

這樣做。感謝代碼和簡短的解釋。 – rfj001 2014-11-21 07:32:01

1

嘗試之前.promote-member, .demote-member

對於例如,如果<div id="container">總是添加靜態元素添加靜態HTML元素..

試試這個

$("#container").on("click",".promote-member, .demote-member",function(){ 

alert("Test"); 

}); 
+0

鏈接仍在ajax調用後觸發 – rfj001 2014-11-21 07:24:51

+0

這個沒有起作用的原因是因爲我添加的容器仍然被html開關刪除,因爲我修改了'​​'標籤之間的整個html。如果我已經爲我的​​標籤添加了一個類,並將其用作容器,我認爲這將與@ sanki的答案一樣。謝謝您的幫助。 – rfj001 2014-11-21 07:34:28