2011-03-25 107 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點職位說明在一個時間。