1

我有一个li通过 AJAX 动态生成的列表:

<ul>
  <li id="hello"></li>
  <li id="world"></li>
  <li id="helloWorld"></li>
</ul>

我的脚本中也有一个全局变量,如下所示:

var world = 'world';

我希望在准备好文档后,在加载列表后立即找到li与我的全局变量具有相同 id 的项目:

$('ul').find('#' + world);

我不能.on()在这里使用传统的事件监听器,因为没有其他事件可以触发它,除了加载本身的结束。

所以我的下一步是在我的加载脚本中触发一个自定义事件:

$('ul').trigger('loadingDone');

然后听它:

$('ul').one('loadingDone', theFunctionThatDoesTheSearch );

问题是,这失败了,它完全忽略了任何生成的元素。

我知道一个可能的解决方案是在 ajax 调用的成功方法中运行这些操作,但是我正在构建的应用程序的当前架构不允许这样做。(我可以并且确实触发了成功 AJAX 方法中的事件,我只是不能在那里进行搜索)

基本上我要求的是替代解决方案,允许加载脚本让我知道它何时完成以及过滤生成的内容而不在加载脚本本身内部进行过滤的方法。

4

2 回答 2

1
$(document).on("customevent","ul",function(){
console.log("event triggered from inside the ajax success handler");
});

$.ajax({
    url:'/echo/json/',
    success:function(){
    $('div').append("<ul><li>asd</li></ul>");
        $("ul").trigger("customevent");
    }
});

http://jsfiddle.net/xp7sr/2/

于 2012-05-15T20:26:18.110 回答
0

如果您的 ajax 请求是通过 jquery 执行的,您可以尝试http://api.jquery.com/ajaxComplete/

于 2012-05-15T20:24:01.400 回答