通过屏幕截图和下面的代码,我试图将“删除按钮”仅显示给墙贴的所有者。我以Michael Grigsby的身份登录,你可以从屏幕截图中看出,第一个墙贴是隐藏“删除按钮”,但其余部分甚至显示在我不应该拥有的Mike Wyatt帖子上。 / p>
我无法弄清楚为什么会造成这种情况。我有两种可能性;或者我必须在jQuery中遍历墙上的帖子,否则我的SQL语句写得不正确。关于为什么这样做的任何想法?
PHP和jQuery代码:
<?php $this->load->helper('date');
$userid = $this->session->userdata('userid');
$query = $this->db->query("SELECT * FROM churchMembers WHERE cMuserId = '{$userid}'");
$row = $query->row();
if ($query->num_rows() != 0) {
$membersChurchId = $row->cMchurchId;
$query2 = $this->db->query("SELECT wp.idwallPosts, wp.entryData, wp.entryCreationDateTime, u.firstname, u.lastname, u.userid, u.defaultImgURI FROM users u
INNER JOIN wallPosts wp ON wp.postingUserid = u.userid
WHERE wp.wpChurchId = '{$membersChurchId}' ORDER BY wp.idwallPosts DESC LIMIT 200");
foreach ($query2->result() as $row) { ?>
<?php // the following php is the bootstrapper for the wall
if ($userid != $row->userid) { ?>
<script type="text/javascript">
$(document).ready(function() {
$("#delPost").remove();
});
</script>
<?php } ?>
答案 0 :(得分:3)
我在看这个:
$("#delPost").remove();
...并且认为你可能每个项目都有id="delPost"
。关于id
属性的常见误解是你可以重复使用它们,但你不能。每页只能有一个元素id="delPost"
(validating您的HTML会显示错误。)
无论如何,您的脚本只会阅读第一个脚本,如this demo所示。每个id必须是唯一的,您可能希望切换到class
并重新考虑您的逻辑,但这无论如何都没有多大意义,因为在该循环中,只要隐藏一个元素,它们就会全部因为您的选择器不是非常具体(适用于与您的选择器匹配的每个元素,循环/重复该脚本是多余的)。
有很多方法可以解决这个问题,但这是我的建议:不要用javascript隐藏或删除它们,只是不要用PHP代码输出它们。
答案 1 :(得分:3)
#delPost
表示您正在使用id="delPost"
。但是,HTML要求ID是唯一的。您可能希望改为使用class="delPost"
和.delPost
。