我怎么能只用Javascript(AJAX)编写其中一篇文章呢


How can I adress only one of the articles in Javascript (AJAX)?

在我的网站上,我在每篇文章下都有可点击的隐藏元标签,如页面浏览量或谷歌请求。

这是我使用的代码:

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function(){
         $(".slidingDiv").hide();
        $(".show_hide").show();
     $('.show_hide').click(function(){
    $(".slidingDiv").slideToggle();
    });
 });
 </script>

这个PHP代码:

<p class="postmetadata"><a href="javascript:;" class="show_hide">[Show/hide meta data]</a></p>
<div class="slidingDiv">
<p class="postmetadata">Aufrufe: <?php if(function_exists('the_views')) { the_views(); } ?> </p>
<p class="postmetadata"><?php if(function_exists('stt_terms_list')) echo stt_terms_list() ;?></p>
<p class="postmetadata"><?php if (function_exists('backlinks')) backlinks(); ?></p>
<br>
</div>

我使用Wordpress。问题是,如果我点击"显示/隐藏元数据",每篇文章都会显示元数据。我只想要我点击的文章的元数据。这是我的网站。

你必须点击德语"[Zeige/VersteckeMeta-Daten]",它等于"[Show/hide Meta-data]"。

使用jQuery方法.next(),这将立即工作:

$('.show_hide').click(function(){
    $(this).next().slideToggle();
});

使用jQuery方法.siblings(),即使重新排列元素的顺序,这也会起作用:

$('.show_hide').click(function(){
    $(this).siblings('.slidingDiv').slideToggle();
});

使用jQuery方法.closest(),即使重新排列元素深度,这也能工作:

$('.show_hide').click(function(){
    $(this).closest('.span-8').find('.slidingDiv').slideToggle();
});

另外,对于jQuery/Prototype冲突,请参见:Prototype和jQuery在一起?

最简单的解决方案是创建一个临时上下文:

(function($){
    $('.show_hide').click(function(){
        $(this).siblings('.slidingDiv').slideToggle();
    });
}(jQuery));