通过使用.load()加载的文件访问已添加到DOM中的元素


Accessing elements which have been added to the DOM via file loaded using .load()

我正在使用jQuery.load()加载php文件。这个php文件回显了一个新的div。这个div包含一个属性"title",我需要在js文件中获取它的值。

// file.php
echo '<div id="max_page" title="' . $max_page . '"></div>';
// js
$("someElement").load("file.php");
var num = $("div#max_page").attr("title");

这导致num="未定义"。我假设这是因为在执行初始$(document).ready之后,div#max_page被添加到DOM中,因此jQuery根本不知道它的存在。是这样吗?

如何解决这个问题?(我试着用.live()进行实验,但无法让它为我工作)

当您检查num时,它还没有被添加到DOM中,因为ajax还没有完成将页面加载到DOM中。在load:的complete回调中执行

$("someElement").load("file.php",function(){
var num = $("div#max_page").attr("title");
});

你认为时机不对是对的:)

// js
$("someElement").load("file.php", function(){
    var num = $("div#max_page").attr("title");
    // here you can do with num whatever you need
});

作为第二个参数传递的函数将在file.php加载到someElement后立即执行,从而保证title属性此时存在。

设置num时,文件尚未加载。使用回调。

$("someElement").load("file.php", function () {
   var num = $("div#max_page").attr("title");
});