2013-02-26 76 views
1

我有一張表,我需要執行一個功能。它位於搜索結果頁面上,執行搜索後(或加載另一頁結果頁面)div內的內容發生更改。不幸的是,我沒有訪問被調用來更改數據的ajax方法(它是一個全局使用的函數,無法更改爲此頁面)。加載動態內容後執行功能

我想要做的是,每當$(「#search_results)div發生變化時,我想遍歷結果集,刪除定義爲內聯的onclick事件,並使用我自己的onclick函數。是一個樣品(這工作第一次在頁面加載,而不是一個Ajax調用改變搜索結果後):

<script type='text/javascript'> 

    $(document).live(function(){ 
     alert('fired'); 
     $('table.lookup_table tr').each(function(){ 
      $(this).removeAttr('onclick');  
     }); 
    }); 

$('table.lookup_table tr').on('click', function(event){ 
     event.preventDefault(); 
     $(this).removeAttr('onclick'); 
     var pacware = $.trim($(':nth-child(1)', $(this)).html()); 
     var site = $.trim($(':nth-child(2)', $(this)).html()); 

     window.location = '<?php echo matry::here_to('edit');?>&pacware_code=' + pacware + '&site_id='+site; 
     return false; 
    }); 
</script> 

*此外,我需要這個在IE 8中運行*

+0

html的哪部分被其他代碼替換? – 2013-02-26 23:17:45

+0

整個表格正在重新加載與搜索結果相匹配的接下來的50個值 – Mike 2013-02-26 23:18:26

+0

根據你真正想要在這裏做的事情,你真的很難受。請澄清,並確保我們可以幫助你。 – iAmClownShoe 2013-02-26 23:19:31

回答

1

你可以試試這個,但它不是很好的方式:

$('body').on('click', 'table.lookup_table tr', function(e){ 
     e.preventDefault(); 
     e.stopPropagation(); 
     //... 
     return false; 
    }); 

每次點擊時,如果您點擊與table.lookup_table tr相匹配的元素,它將檢查並執行事件處理程序。

+0

預防默認不會停止另一個onclick事件。所以我需要循環並刪除所有onclicks,然後綁定新的onclick – Mike 2013-02-26 23:24:18

+0

在這種情況下,除e.preventDefault之外,請嘗試'e.stopPropagation()'。 – 2013-02-26 23:34:28

+0

我最終變成了.live而不是.on。由於我的腳本重定向,它可以防止另一個發生(這只是一個測試的痛苦)。 – Mike 2013-02-27 00:27:29