我在使用.load()加载它们之后尝试操作一些元素。我已经正确加载了所有内容,但我似乎无法定位任何已加载元素中的任何元素。这似乎很容易,但我可以把手指放在上面。
我在元素加载后使用回调,但DOM似乎不知道它们的存在?
function load_page(){
$('#page_name').load("/page-name/ .page", null, load_complete());
}
function load_complete() {
$('#page_name .book_img').addClass('hello');
}
好的,这就是我现在所处的位置。我添加了......
$('#wrapper').ajaxComplete(function() {
$('#page_name .book_img').addClass('hello');
}
哪个有效。 .autoComplete与使用.load()函数打包的回调之间必须存在差异。我不是很喜欢这个,因为每次AJAX事件加载完成时都会调用它,但它确实让我在未来的路上走得更远。
有人有什么更好的吗?
[编辑]
我也试过......
$('#wrapper').ajaxComplete(function() {
$('#page_name .book_img').addClass('hello');
}
这很好,因为它在调用函数之前等待所有AJAX调用完成。也许这是实现它的方法,但似乎.load()函数仍然可以解决这个问题?
答案 0 :(得分:2)
看起来像执行回调函数而不是将其传递给加载方法:
function load_page(){
// $('#page_name').load("/page-name/ .page", null, load_complete());
$('#page_name').load("/page-name/ .page", null, load_complete);
}
function load_complete() {
$('#page_name .book_img').addClass('hello');
}
因此传递给load方法的内容为null,因为load_complete
中没有返回值答案 1 :(得分:0)
您必须包含用于操作已加载项目中已加载对象的javascript。这是因为它已经浏览了所有的javascript。
修改强>
试试这个,将异步性设置为false,这样你就可以在加载后添加一个回调。
$.ajax ({
async: false,
type: "GET",
dataType: "html",
url: "/page-name/ .page",
complete: function(){load_complete()};
});
<强>更新强>
嘿,还有我偶尔使用的这个简写语句。让我感到惊讶的是,这些不适用于您的脚本..$.get($(this).attr('href'), function(response) { $('#content').html(response); });
答案 2 :(得分:0)
有时HTML需要一些时间来渲染。尝试在访问新内容之前添加延迟:
$('#page_name').load("/page-name/ .page", null, window.setTimeout(function(){load_complete()},50);