2011-08-10 43 views
0

即时通讯尝试使我的WordPress的链接加载到div而不是刷新页面。在网上尝试过一些教程,但他们似乎并没有工作(或不完全)使用jquery将wordpress链接加载到div

我自己的试用版只会在每次提取我的最后一篇文章时(它确实会加载到div但它并不会生成其他文章,然后最后使所有的链接我点击转到同一职位。

人有一个想法,为什么这不工作?

非常感谢!

<?php while (have_posts()) : the_post(); ?> 

    <div class="WZ-OVER-wereldTitle"> 
    <a href="<?php the_permalink(); ?>" rel="<?php the_ID(); ?>"> 
    <?php the_title(); ?> 
    </a> 
    </div> 


<script> 
    $(document).ready(function() { 
     var postID = $('.WZ-OVER-wereldTitle a').attr('rel'); 
     $('.WZ-OVER-wereldTitle a').click(function() { 
      event.preventDefault(); 
      $('#content').html('loading...'); 
      $('#content').load('http://www.weetzelf.nl/?p=' + postID); 
      return false; 
     }); 
    }); 

</script> 

<?php endwhile; ?> 

回答

0

您正在试图加载外部(跨域)请求使用.load。它不会工作。

替代方案:使用James Padolsey plugin然后调用它。这个工作到jquery1.4.4只有

演示:http://jsfiddle.net/YErfj/

+0

谢谢,我解决了这个问题,使用the_permalink为loadedURL和the_ID选择正确的a。 实际上现在我试图用你的方法回到主索引页(即时通讯不知道我是否理解ajax gd enuff atm,当我点击一个标签/猫并使用你的插件时,你得到了一个小技巧来使这个工作成为可能)谢谢! –

0

,你做错了最主要的是在这里:

$('#content').load('http://www.weetzelf.nl/?p=' + postID); 

这样做是你的内容加载到你的#content股利。但jQuery的load()方法将其目标的整个内容设置为从load()返回的任何内容。这就是为什么你只能得到最后一篇文章 - 你实际上是一个接一个地成功加载所有文章,每个新文章都会替换上次加载的文章。

尝试像

$('#content').append($('<div>').load('http://www.weetzelf.nl/?p=' + postID)); 

这将创造一个全新的div元素,内容加载到,并将它添加到您的#内容,而不是更换什么是已经存在。

但是,您正在做的其他奇怪的事情是多次输出jQuery部分,因为它在php while循环中。正因为如此,我认为你最终会得到那些脚本的副本,因为这些脚本都是发布的,所有脚本都是以页面加载的方式运行(一个接一个地运行)。在浏览器中检查网站的源代码,看看是否这样是这样的 - 我猜你会看到<script>块的多个副本。

要解决该问题,请将脚本部分移至php while循环之外。你只需要它的一个副本。