2011-08-01 99 views
1

我想要了解更多部分,而不链接到另一个页面,因此我试图实现JQuery显示/隐藏。如何使用PHP中的foreach循环使用jquery隐藏/显示

的数据进行扩展,从PHP中的foreach循环快到了,我已经创建了一个功能,增加了HTML标记,如果内容足够长

是我遇到的问题是,如果我点击阅读更多的链接之一,它扩展了所有这些链接,它也滚动到页面的顶部,远离我需要的浏览器。

如何使这项工作仅适用于点击链接。有没有办法将PHP中的变量添加到Jquery中?

在HTML头的jQuery脚本

<script src="js/jquery.js" type="text/javascript"></script> 
<script type="text/javascript"> 
$(document).ready(function(){ 

$('name#read').hide(); 
$('a#read_more').click(function(){ 
$('name#read').slideDown('slow');    
}); 
$('a#read_less').click(function(){ 
$('name#read').slideUp('slow'); 
}); 
}); 
</script> 

PHP函数

function read_more($content){ 

if (strlen($content) < 150){ 
    return $content; 
} else { 
    $content = substr($content,0,150) . "......<a href='#' id='read_more'>read more</a>" . "<a name id='read'>" . substr($content,150) . "</a>"; 
    return $content; 
} 

} 

回答

1

你所寻找的是这样的:使用http://api.jquery.com/event.stopPropagation/ event.stopPropagation()的点击处理程序中,使其将留在同一页面上。

至于多个节目发生这可能是因为你没有产生独特的ID!在你的html标签中有data- *属性,或者为你的'a'标签增加一个唯一的id。像这样的东西应该工作:

$('a.readMore').click(function() { 
    event.stopPropagation(); 
    var data_id = $(this).data('contentId'); 
    $('#'+data_id).show(); //or fadeIn or slideUp/Down... 
} 

你的HTML会再是这样的:

<a href="#" class="readMore" data-contentId="1">...read more</a> 
<div id="1">My Content to show goes here</div> 

不一定是DIV,但你的想法...

+0

啊哈感谢我得到它!我可以将数据库自动增量分配到HTML中,并将其作为HTML属性的值来获取。 – user866190