2011-03-25 105 views
2

我有一个foreach循环循环并显示数组中的所有数据没有问题,但我有一些jQuery我想应用到结果,但jQuery只适用于第一部分数据被显示。我不确定为什么,如果有人能够帮助那会很好。PHP与foreach问题与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(); 
     }); 
+0

我们可以看到JQuery脚本吗? – 2011-03-25 01:27:42

回答

2

你忘了张贴了jQuery你使用:-)但我怀疑这是因为你使用的div有相同的ID(“news_post”)这样的jQuery只使用它找到的第一个ID。

你可以使用$count_limit后缀来创建一个真正唯一的id(HTML规范不允许具有相同id属性的多个元素),或者改变jQuery选择要操作的元素的方式(例如通过classname) 。

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

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

我已经将jQuery添加到帖子的底部,因此它正在循环遍历foreach,并且仅在发现第一次时才应用jQuery课程? – Lit 2011-03-25 01:29:24

+0

不,我的意思是'div#news_post',但那不相关...有关具有相同id属性的多个元素的评论仍然有效。 id属性的全部要点是为一个元素提供唯一的标识符。 – Carpetsmoker 2011-03-25 01:38:33

+0

我已经解决了这个问题,我把'$(this).next('。news_desc')toggle();' 放入jQuery – Lit 2011-03-25 01:40:16

0

所以我会提出了jQuery的循环之外,我会隐藏每个岗位默认使用第一例外。

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

然后我会添加一个点击,即使这将隐藏除选定的一个之外的所有。

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

不是100%肯定这会工作,因为它一直以来我已经使用jQuery的一段时间,但我认为你正在寻找,只显示文章标题,并有鉴于只有1点职位说明在一个时间。