jquery .live on load事件

djb*_*ick 16 jquery

我需要一种方法来使用jquery .live()函数来处理通过ajax加载的元素.

例如,通过ajax加载div .load()

<div id="mydiv"></div>
Run Code Online (Sandbox Code Playgroud)

通常我会.live()使用click事件,但我需要知道如何告诉dom这个新的div已加载而没有来自用户的任何明确的操作/事件.

这段代码不起作用,但我想做这样的事情:

mydiv = $("#mydiv");

mydiv.live("mydiv.length > 0", function() {
       // do something
});
Run Code Online (Sandbox Code Playgroud)

"mydiv.length"是典型"点击"或其他事件的替代品.

Sea*_*ira 11

另一种方法是使用trigger()触发自己的自定义事件(让我们称之为content_loaded). load()采用它在完成时调用的回调函数:

function callback_function(responseText, textStatus, XMLHttpRequest) {
    //if we have valid data ...
    trigger("content_loaded");
}

$("your_selector").load("your_url", callback_function);
Run Code Online (Sandbox Code Playgroud)

然后只需设置一个事件监听器并在事件触发时运行它.

$("your_selector").bind("content_loaded", your_results_loaded_function);
Run Code Online (Sandbox Code Playgroud)


Pet*_*dIt 9

没有"DOM已更改"事件,并且创建一个对浏览器造成负担.您最好使用load方法的回调来触发您需要的功能.

$('#foobar').load('myurl.html',function() {
    var mydiv = $("#mydiv");
});
Run Code Online (Sandbox Code Playgroud)