我有一个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('–', '–', $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 :(得分:2)
你忘了发布你正在使用的jQuery :-)但是我怀疑这是因为你使用的所有div都有相同的id(“news_post”)所以jQuery只使用它找到的第一个id。
您可以使用$count_limit
对id进行后缀以创建真正唯一的ID(HTML规范不允许具有相同id属性的多个元素)或更改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个帖子描述。