【问题标题】:Perform function after dynamic content is loaded加载动态内容后执行功能
【发布时间】:2013-02-26 23:12:14
【问题描述】:

我有一张桌子,我需要在上面执行一项功能。虽然它位于搜索结果页面上,但在执行搜索(或加载另一页结果)后,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 中工作 *

【问题讨论】:

  • html的哪一部分被其他代码替换了?
  • 正在重新加载整个表,其中包含与搜索结果匹配的下 50 个值
  • 在您真正想要做的事情之后,我真的很难过。请澄清,我相信我们可以帮助你。
  • 另外,你提到的全局ajax调用并不少见,但是这个全局调用不接受回调成功函数吗?期望您作为开发人员从不使用 ajax 调用中的回调似乎有点荒谬。
  • 我有一个通过 ajax 加载的表,每次加载该表时(搜索后),我想运行删除 onclick 属性的函数。然后我需要将我的新 onclick 绑定到每个 tr

标签: jquery dynamic event-handling


【解决方案1】:

你可以试试这个,但这不是好方法:

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

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

【讨论】:

  • 虽然阻止默认设置不会停止另一个 onclick 事件。所以我需要在绑定新的onclick之前循环并删除所有的onclicks
  • 在这种情况下,除了e.preventDefault 之外,请尝试e.stopPropagation()
  • 我最终改成了 .live 而不是 .on。由于我的脚本重定向,它可以防止另一个发生(测试起来很痛苦)。
  • .live() 在 jquery 1.9 中被弃用和删除。使用“实时”处理程序的正确方法是使用上面显示的方式“打开”,附加到父级,然后提供子选择器。您也可以简单地使用$(document).on(event, selector, callback) 而不是$(selector).live(event, callback) 请参阅api.jquery.com/live
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-11
  • 2014-07-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多