2014-07-09 84 views
0

我需要创建一个类似于Facebook评论的功能。例如,如果我点击评论按钮,它会向我显示所有评论,只是从相同的职位。我试图用jQuery创建,但如果我点击按钮,它会显示我所有帖子中的所有评论。我只需要评论,我点击了其他人。用jquery显示评论

有show_com.js:

$(".com_but").click(function() { 
$('.all_com').show(); 
}); 

有风格的CSS:

.all_com{ 
display:none; 
} 

并没有index.php文件:

<button class='com_but' id="<php echo $post_id; ?>">add comment</button> 
<script src="show_com.js"></script> 
<div class='all_com' id="<php echo $post_id; ?>"> 
<input type='text'/> 
</div> 

$post_id是从帖子的ID(如Facebook的发布或推特)。

+0

你看过ajax如何处理这个问题吗? –

+0

您不能在多个元素上使用相同的ID。 – j08691

+0

我还没有试过给我们ajax。 @ j08691我想。但我怎么能在多个元素上添加该功能? – user3722203

回答

0

$秀( );无论他们在哪里,都会显示所有具有'all_com'级别的div。但你似乎打算只显示与所点击的按钮相同的父代的子代的'all_coms'。对?

在这种情况下,你应该有这样的:

<script src="show_com.js"></script> 
<div class="container"> 
    <button class='com_but' id="<php echo $post_id; ?>">add comment</button> 
    <div class='all_com' id="<php echo $post_id; ?>"> 
    <input type='text'/> 
    </div> 
</div> 

和你的函数将是这样的:

$(".com_but").click(function() { 
    $('.all_com',$(this).parent()).show(); 
}); 

这将只显示包含的父类内all_com的元素点击按钮。 希望这有助于。

+0

你真棒。非常感谢。有用。完善。非常感谢你。 @skarist – user3722203

0

如果您只想显示与点击位于同一层次结构中的注释,则通常的做法是从点击的位置(由$(this)表示)开始,直至该节DOM(使用.closest(selector)),然后查找该共同父项中的所有感兴趣项目(使用.find())。

你不显示你的HTML的足以让我们知道,普通家长选择会是什么,但总的想法是这样的:(“ all_com”)。

$(".com_but").click(function() { 
    $(this).closest(common parent selector here).find('.all_com').show(); 
}); 
+0

没有工作,或者我做错了什么。我添加了'id_o =“<?php $ post_id;?>”'并且为jquery添加了'$(this).closest(id_o).find('。all_com')。show();'。这错了? @ jfriend00 – user3722203

+0

@ user3722203 - 如果您需要准确,真实的帮助,请发布包含父母的生成HTML。请不要发布您的模板,因为我们需要查看浏览器(和JavaScript)所看到的内容。如果在您的实际HTML上正确实施,此概念就可以正常工作。与'.closest()'一起使用的选择器应该是你在HTML的这些块中的每一个中具有共同父项的一些类名。这将是一个包含按钮和相关的all_com div的父代。我不知道你为什么要使用某个ID - 这不是这样做的。 – jfriend00

+0

感谢您的帮助,我解决了这个问题。 @ jfriend00 – user3722203