gpt4 book ai didi

javascript - 如何在循环中独立显示/隐藏具有相同类名的 div

转载 作者:行者123 更新时间:2023-11-28 07:06:00 24 4
gpt4 key购买 nike

我在一个 SQL 查询中有一个 while 循环,它返回特定 post 页面 的所有 comments ,在同一个循环中,我有另一个查询和一个搜索的 while 循环for 回复评论并使用LIMIT 1仅返回第一行。我这样做了,所以一开始对于评论只显示一个回复,我在第二个循环中添加了另一个查询和一个循环来搜索其他回复comment,只不过这次我使用 LIMIT 1,18446744073709551615 返回除第一行之外的其他行。我将最后一个查询的结果放在一个最初隐藏的 div 中,并在隐藏 div 之前的第一个查询中触发查看所有回复

现在我在第一个循环(包含评论)内有一个触发器查看所有回复。使用 javascript,我可以在单击触发器时显示和隐藏 div。这是它的样子的快照

第一个快照,div 被隐藏,仅显示 1 个回复。 enter image description here

第二个快照,div 可见,触发器 的文本已更改 enter image description here

我的问题:由于我对所有隐藏的 div 使用相同的类,因此触发特定 comment 显示/隐藏其回复 适用于所有 注释。因此,当我单击第一条评论的查看所有回复时,也会显示第二条、第三条评论的回复。如何重写我的代码以定位特定评论以显示/隐藏其回复?

JavaScript

<html>
<head>
<script language="JavaScript">
$(document).ready(function(){
var showText='View all replies';
var hideText='Hide';
// initialise the visibility check
var is_visible = false;
// append show/hide links
$('.view1').prev().append();
$(".licom").hide();
$(".view1").click(function(){
// switch visibility
is_visible = !is_visible;
// change the link depending on whether the element is shown or hidden
$(this).html( (!is_visible) ? showText : hideText);
$('.licom').toggle(function() {
$(this).closest('view1').find('.licom').hide();
return false;
},
function() {
$(this).closest("view1").next(".licom").show();
return false;
});
});
});
</script>
</head>
<body>
</body>
</html>

info.php

  <?php
...........
$stmt = $conn->prepare(
"SELECT *
FROM comment
WHERE post_id = :pid
");

$stmt->bindParam(":pid", $type_id, PDO::PARAM_INT);


$stmt->execute();

while($obj = $stmt->fetch()){
$username = $obj['user_name'];
$comment = $obj['comment'];
$id1 = $obj['id'];
$userimage = $obj['user_image'];
$row ++;
$likes = $obj['like1'];
$dislikes = $obj['dislike'];
echo '<div class="txt">';
echo '<div class="comment-container">';
echo '<div class="comment-item">';
echo '<div class="comment-avatar">';
echo '<img src="user/user_images/'.$userimage.'" alt="avatar">';
echo '</div>';
echo '<div class="comment-post">';
echo '<span style="font-weight:bold;">'.$username.'&nbsp&nbspsaid....
</span>';
echo '<p style="margin-left:-11px;">'.$comment.'</p>';
echo '<input type="hidden" name="comment_id" value="'.$id.'">';
echo '<form action="" method="post" class="ajaxform"
enctype="multipart/form-data">';

echo '<input type="hidden" name="lkcv[]" value="'.$id.'">';
echo '<input type="hidden" name="pid" value="'.$type_id.'">';
echo '<input type="hidden" name="stk" value="'.$likes.'">';
echo '<input type="image" src="images/like.png" id="lksub" width="15"
value="som" height="15" style="float:right;position:relative;margin-
right:290px;"/><div class="ld">'.$likes.'</div>';

echo '</form>';
echo '<form action="" method="post" enctype="multipart/form-data">';
echo '<input type="hidden" name="lkd_id" value="'.$id.'">';
echo '<input type="hidden" name="dislike" value="">';
echo ' <input type= "image" id="submit" src="images/dislike.png"
width="15" height="15" style="float:right;position:relative;
margin-top:-14px;margin-right:230px;"/>
<div class="ldks">'.$dislikes.'</div>';
echo '</form>';
//trigger to hide/show replies
echo '<span class="view1" style="float:right;margin-top:-15px;">View all replies</span>';
//
echo '<span class="SendCopy">Reply</span> ';
echo '<div class="users">';
echo '<form action="" method="post" enctype="multipart/form-
data">';
echo '<textarea rows="4" name="replycomment" style="float:right;
resize: none;margin-top:5px;" cols="50" >';
echo '</textarea>';
echo '<input type="hidden" name="comment_id" value="'.$id.'">';
echo '<input type="submit" name="reply" id="submit" class="post-
button" value="Send" />';
echo '</form>';

echo '</div>';

echo '</div>';

echo '</div>';

echo '</div>';
echo '</div>';

//Relpy to comment, show only the first row
$rep = $conn->prepare("SELECT * FROM reply WHERE comment_id = :comid LIMIT 1");
$rep->bindParam(":pid", $id1, PDO::PARAM_INT);


$rep->execute();

while($obj = $rep->fetch()){
//...........same output as first without the view all replies trigger......

//Relpy to comment, show from 2-
$rep = $conn->prepare("SELECT * FROM reply WHERE comment_id = :comid LIMIT 1,18446744073709551615");
$rep->bindParam(":pid", $id1, PDO::PARAM_INT);


$rep->execute();

while($obj = $rep->fetch()){
//div to show/hide
echo '<div class="licom">';
//...........same output as first without the view all replies trigger......

}
}
}
?>

最佳答案

$('.licom').toggle()... 太宽泛,将选择具有 'licom' 类的所有元素,无论它们是否位于被单击的元素内部。尝试使用 $(this).children('.licom') 来代替。

关于javascript - 如何在循环中独立显示/隐藏具有相同类名的 div,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31711898/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com