PHP的foreach问题与jQuery

时间:2011-03-25 01:23:39

标签: php jquery foreach

我有一个foreach循环,循环并显示数组中的所有数据没有问题,但是我有一些jQuery我想要应用于结果,但jQuery只适用于要显示的第一个数据。我不确定为什么,如果有人能提供帮助那就太好了。

$count_limit = 0;
$limit = 5;

foreach ( $feeds->data as $item ) {
extract( (array) $item );
if($count_limit++  < $limit){
?>
<div id="news_post">
    <? $title_str = str_replace('–', '&#150;', $title) ?>
    <p class="news_title"><a href="<?php echo $link; ?>" target="_blank"><?php echo $title_str; ?></a> <a href="#" class="read">read...</a></p>
    <div class="news_desc"><?php echo "$description" ?></div>
</div>
<? }
else {
    break;
}


$(this).next('.news_desc').hide();
        $(this).next('a.read').click(function() {
            $(this).next('.news_desc').toggle();
        });

2 个答案:

答案 0 :(得分:2)

你忘了发布你正在使用的jQuery :-)但是我怀疑这是因为你使用的所有div都有相同的id(“news_post”)所以jQuery只使用它找到的第一个id。

您可以使用$count_limit对id进行后缀以创建真正唯一的ID(HTML规范不允许具有相同id属性的多个元素)或更改jQuery选择要操作的元素的方式(例如按类名)。

编辑:我使用jQuery已经有一段时间了,但这看起来很奇怪,为什么不使用:

$(.news_desc').hide();
$('a.read').click(function() {
  $(this).next('.news_desc').toggle();
});

答案 1 :(得分:0)

所以我会把jQuery移到循环之外,默认情况下我会隐藏每个帖子,除了第一个。

$('.news_desc').not(':first').hide();

然后我会添加一个点击,甚至会隐藏除了所选的那个之外的所有内容。

$('a.read').click(function() {
     $('.news_desc').not(this).hide();
}

不是100%肯定这会有效,因为我已经使用了jQuery,但我认为你只想显示帖子标题,并且一次只能查看1个帖子描述。