【问题标题】:jQuery run function on element loaded via AJAXjQuery 在通过 AJAX 加载的元素上运行函数
【发布时间】:2013-02-26 20:50:16
【问题描述】:

我有一个项目正在通过 js 函数加载对帖子的回复:

$('div.discussion_content').each( function() {
    discussion.loadDiscussion($(this));
});

它在页面加载时工作得很好,但我们在页面上有一个“无限滚动”,当我向下滚动以获取更多内容(以及更多讨论)时,我什么也得不到。

我已经尝试过 .on() jQuery 函数……但是在什么方面呢?我想在元素加载后立即调用此函数,但尝试 .on('load' ... ) 无济于事。

我已经尝试过 .livequery() 插件...

$('div.discussion_content').livequery(function() { 
    discussion.loadDiscussion($(this)); 
});

也无济于事。

我想要的不可能是不可能的,甚至是不寻常的......但我发现自己很糟糕,不知道解决方案。

【问题讨论】:

    标签: jquery ajax livequery


    【解决方案1】:

    如果您想在插入后立即执行操作,那么您可能应该将逻辑作为 AJAX 调用成功处理程序的一部分。

    如果您真的想对其中一个元素的某些操作执行此逻辑,那么on() 应该是您的方法。请注意,on() 需要附加到在调用 on() 函数时存在的动态元素的父元素。用法是这样的:

    $('#container_available_at_page_load').on('click', '.class_of_dynamic_elements', function() {
        // do something
    });
    

    【讨论】:

    • 不知道为什么我从来没有想过在 AJAX 成功函数中重复该语句...谢谢,我会尝试一下。我会投票,但我没有这样做的声誉。
    【解决方案2】:

    你试过滚动事件吗? http://api.jquery.com/scroll/

    【讨论】:

    • 滚动事件是一个有趣的想法......我会玩弄它。谢谢。
    【解决方案3】:

    您尝试过事件委托吗?

    $(document).on('click','myClickeableDiv', function(){
      //do your thing
    });
    

    【讨论】:

      【解决方案4】:

      这些元素在页面加载时不存在,因此“each”语句不会影响它们。 尝试在创建后触发“each”语句(在滚动事件上)。

      *如果您附上更多代码,可能会有所帮助。

      【讨论】:

        猜你喜欢
        • 2019-03-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-01-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多