如何使用JQuery将两个div加载到单独的目标中?

时间:2010-03-15 20:30:53

标签: jquery

我正在努力实现两件事,这两件事都未能实现。 在服务器上有一系列笔记;都包含一个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标记中的现有值。

我在这里完全错误的轨道上有两个加载语句吗?非常欢迎投入,谢谢。

1 个答案:

答案 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中进行测试,看起来不错,只需要一次页面。