jQuery在通过AJAX加载的元素上运行函数

时间:2013-02-26 20:50:16

标签: jquery ajax livequery

我有一个项目通过js函数加载回帖:

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

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

我已经尝试了.on()jQuery函数......但是在什么方面呢?我想在元素加载后立即调用这个函数并尝试.on('load'...)无效。

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

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

也无济于事。

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

4 个答案:

答案 0 :(得分:3)

如果你想在插入后立即执行一个动作,那么你应该把逻辑作为AJAX调用的成功处理程序的一部分。

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

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

答案 1 :(得分:0)

您是否尝试过滚动事件? http://api.jquery.com/scroll/

答案 2 :(得分:0)

您是否尝试过活动授权?

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

答案 3 :(得分:0)

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

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