2011-07-11 38 views
1

的Rails 2.3.5jQuery的HTML替換鏈接的區域 - 進一步HTML替換不工作

  • 我有票的一個表,有一個鏈接到「顯示」 票每條記錄。
  • 此列表通常是由一個jQuery HTML方法通過 (名單新鮮阿賈克斯拉)
  • 如果你點擊「顯示」鏈接刷新一個jQuery用戶界面對話框打開
  • 裏面的用戶界面對話框是jQuery的標籤。一個選項卡是'添加評論'
  • 添加評論提交替換現有評論的容器與一個新的列表(使新評論 - 看到它出現)
  • 當這種模式(或編輯/新模式關閉) ,他們點擊搜索/篩選形式的 按鈕強制票 列表的更新上,靠近

這一切都完美。它發生故障的時間是通過Ajax更新故障單列表的時間。如果票單列表由Ajax(jQuery HTML替換)重新構建,第二次點擊模式對話框中的「添加評論」按鈕,這就像jQuery不知道我在說什麼元素ID和評論部分呈現本身,取代了頁面。

有關列表的Ajax更新以及第二次單擊「顯示」鏈接時,會導致註釋容器的jQuery HTML替換無法識別註釋容器的標識。

有什麼想法?謝謝!

----取代了票據列表

$("#issue_main_list_container").html("<%= escape_javascript(render("ticket_index_body_worklist")) %>"); 

---- .js.erb文件,它取代了評析格在 '顯示' .js.erb文件莫代爾

$("#show_comments_block").html("<%= escape_javascript(render("ticket_show_insert_comment")) %>"); 

----當一個節目鏈接被點擊表格中的----------

<script> 
    $('.show_ticket_link').click(function(){ 
// new_ticket_ajax_wait(); 
var url = $j(this).attr("href"); 
    $j("#form_load").load(url, 
    function() { 
     $j(this).dialog({ 
       modal:true, 
       draggable: true, 
       resizable: false, 
       width:'auto', 
       height:'auto', 
       title: ' Showing ticket ', 
       position: [125, 50], 
       autoResize: true, 
      close: function(){ 
      // on close submit the filter button to ajax refresh the ticket list 
      $j('#ticket_filter_form_submit_button').click(); 
      } 
     }); 
    }); 
return false; 
}); 

</script> 

回答

0

也許點擊「添加註釋」,第二次是做一個完整的頁面因爲您的點擊處理程序未在鏈接上註冊,所以請加載。

嘗試使用.live而不是.click註冊您的點擊事件處理程序。這將處理動態添加到頁面的鏈接的點擊事件。

$('.show_ticket_link').live("click", function(){ 
// new_ticket_ajax_wait(); 
var url = $j(this).attr("href"); 
    $j("#form_load").load(url, 
    function() { 
     $j(this).dialog({ 
       modal:true, 
       draggable: true, 
       resizable: false, 
       width:'auto', 
       height:'auto', 
       title: ' Showing ticket ', 
       position: [125, 50], 
       autoResize: true, 
      close: function(){ 
      // on close submit the filter button to ajax refresh the ticket list 
      $j('#ticket_filter_form_submit_button').click(); 
      } 
     }); 
    }); 
return false; 
});