Ich habe einen Bootstrap modal, die sowohl gelesene und ungelesene Nachrichten von einer Datenbank zeigt:Wie verwendet man jQuery .remove() für div, das mit while/fetch in PHP erstellt wurde?
Es eine Benachrichtigung Abzeichen zeigt (siehe oben), wenn ungelesene Nachrichten vorhanden sind. Ich habe eine Schaltfläche zum Löschen hinzugefügt, kann aber nicht herausfinden, wie Sie das gesamte div entfernen, das diese bestimmte Schaltfläche enthält, einschließlich des hr-Tags. Das Problem ist, dass es nur das zweite div- und hr-Tag löscht, das Sie dort sehen, aber nicht das erste. Ich habe sogar einen Alarm eingerichtet und er zeigt mir die richtige Div-ID für die Sekunde. Der erste tut nichts. Das habe ich versucht. Es ist der Code für die gesamte modal div:
<div id="messages_modal" class="modal fade" role="dialog">
<div class="modal-dialog modal-messages-dialog">
<div class="modal-content">
<div class="modal-header">
<h4 class="modal-title" id="modal_label">Messages
<button class="close" data-dismiss="modal">×</button>
</h4>
</div>
<div class="modal-body">
<?php
$subject = "";
$query = "SELECT id FROM `users` WHERE username=?";
if (!$stmt = $connection->prepare($query)) {
echo $stmt->error;
} else {
if (!$stmt->bind_param('s', $username)) {
echo $stmt->error;
} else {
$stmt->execute();
$stmt->bind_result($recip_id);
$stmt->fetch();
$stmt->close();
}
}
$query = "SELECT username, avatar, conversation_id, conversation_subject, time, msg_seen FROM `users` INNER JOIN `conversation` ON `users`.id = `conversation`.user_1
WHERE user_2 = ? ORDER BY time DESC";
if (!$stmt = $connection->prepare($query)) {
echo $stmt->error;
} else {
if (!$stmt->bind_param('i', $recip_id)) {
echo $stmt->error;
} else {
$stmt->execute();
$stmt->bind_result($sender_name, $avatar, $msg_id, $subject, $timestamp, $msg_seen);
while ($stmt->fetch()) {
$div_count++;
if ($msg_seen == 0) {
$notification_count++;
}
$subject = (strlen($subject) > 16) ? substr($subject, 0, 14) . '...' : $subject;
?>
AUSGANGSPUNKT VON DENEN ICH WILL
<div id="msg_content_<?php echo $div_count;?>" class="msg-content">
<div class="avatar-container">
<a href="../pages/messages.php?id=<?php echo $msg_id; ?>" class="lighten"><img
src="<?php echo $avatar; ?>" class="msg-avatar"></a>
<div class="text-container">
<span class="show-sender"><?php echo $sender_name; ?></span>
<span class="show-msg-status"><?php
if ($msg_seen == 0) {
echo "Unread";
} else {
echo "Read";
}
?></span>
<br/>
<span class="show-msg"> Subject: <em><?php echo $subject; ?></em></span>
<button id="msg_delete_btn_<?php echo $div_count;?>" class="delete-btn">delete</button>
<br/>
<span class="show-timestamp"><?php echo date('D, F jS, Y h:i A', strtotime($timestamp)); ?></span>
</div>
</div>
</div>
<hr id="<?php echo $div_count;?>">
Endpunkts LÖSCHEN, wo ich will
<?php
}
$stmt->close();
}
}
?>
</div>
</div>
</div>
LÖSCHEN Screenshot von dem, was ich brauche gelöscht:
Hier ist meine jQuery. Die Warnung zeigt mir "msg_delete_btn_2", was die korrekte dynamisch erzeugte ID ist, aber dies funktioniert nur für die zweite Nachricht.
$(document).ready(function() {
$('#msg_delete_btn_<?php echo $div_count;?>').click(function() {
$('#msg_content_<?php echo $div_count;?>').remove(); //<-- REMOVES DIV
$('#<?php echo $div_count;?>').remove(); //<-- REMOVES <hr> TAG
alert(this.id); //<-- SHOWS ME "msg_delete_btn_2" for 2nd div, which is correct. First div does nothing.
});
});
Also, wie kann ich auf alle div über die Schaltfläche löschen zugreifen? Ich habe versucht, dem Button und dem Div eine eigene ID zu geben, indem ich eine Zählvariable vergeblich erstellt habe.
Sie verwenden PHP HTML zu erstellen. Sie verwenden jQuery, um an der von diesem HTML erstellten Struktur zu arbeiten. Es gibt hier keine Beziehung zwischen PHP und jQuery. – lonesomeday
Ich werde an einer Ajax-Funktion arbeiten, um später aus der Datenbank zu entfernen. Es entfernt die 2. Div, wenn ich auf die Schaltfläche zum Löschen klicken, aber nicht die erste. Wie greife ich das richtige Element, wenn es nur für das zweite funktioniert? – IRGeekSauce
Was ist der Fehler in Ihrer Konsole? – hassan