我正在努力实现两件事,这两件事都未能实现。 在服务器上有一系列笔记;都包含一个div(id = ajxContent)。一些注释还包含一个附加div(id = ajxHead)。 ajxContent本身包含链接(class = click)以调用下一部分,因此变量中的链接目标。
这是我的代码:
$(document).ready(function(){
$( 'a.clicking' ).live('click', function(e){
e.preventDefault();
var theLink = $(this).attr('href');
$('#loadText').load(theLink + '#ajxContent');
$('h1').load(theLink + '#ajxHead');
});
})
失败的地方:
1)ajxContent被加载到h1标签以及其预期目标中。 2)当我以不同方式设置代码时,如果注释中没有div id = ajxHead,则加载将删除h1标记中的现有值。
我在这里完全错误的轨道上有两个加载语句吗?非常欢迎投入,谢谢。
答案 0 :(得分:0)
您需要一个空格来获取部分内容see the .load()
docs for details:
$(document).ready(function(){
$( 'a.clicking' ).live('click', function(e){
e.preventDefault();
var theLink = $(this).attr('href');
$('#loadText').load(theLink + ' #ajxContent');
$('h1').load(theLink + ' #ajxHead');
});
});
已更新 - 针对您的特定页面进行修复:
$( 'a.clicking' ).live('click', function(e){
e.preventDefault();
$.get($(this).attr('href'), function(resp) {
$('#loadText').html($(resp).filter('#ajxContent').html());
var head = $(resp).filter('#ajxHead');
if(head.length) $('h1').html(head.html());
});
});
因为你的元素都是根元素,我只是没有遇到过,$(selector, context)
不起作用,因为它在内部执行:context.find(selector)
在你的情况下,它们不是一个根响应元素,他们都是根的兄弟姐妹,做alert($(resp).length)
来看这个。
无论如何,上面的代码将完成你所追求的,在Chrome和Firefox中进行测试,看起来不错,只需要一次页面。