加载动态内容后执行功能

时间:2013-02-26 23:12:14

标签: jquery dynamic event-handling

我有一个表,我需要执行一个函数。但是它位于搜索结果页面上,并且在执行搜索(或加载了另一页结果)后,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 *

中工作

1 个答案:

答案 0 :(得分:1)

你可以试试这个,但这不是很好的方式:

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

如果您单击了与table.lookup_table tr匹配的元素,它将在每次单击时检查,如果是,则执行事件处理程序。