gpt4 book ai didi

javascript - jquery不会更新动态生成的html

转载 作者:行者123 更新时间:2023-11-28 21:07:22 25 4
gpt4 key购买 nike

我有一个 ajax 函数来加载我的收件箱消息,并且每条消息都有一个 user_type 和读取字段。

我正在循环消息并为它们生成 html。

function initializeMailbox() {
// get all mailbox data
user.GetInboxMessages(function (response) {
if (response) {
inboxMessages['inbox'] = response;
$("#inbox-table").fadeIn();
loadInboxTable();
inboxDataTable = $("#inboxTable").dataTable();
$("#inbox-count").html(inbox_msg_count);
displayMessage(first_msg_id);
}
});
}
function loadInboxTable() {

for (var i = 0; i < inboxMessages['inbox'].length - 1; i++) {
first_msg_id = inboxMessages['inbox'][0].message_id;
var user_type = "";
if (inboxMessages['inbox'][i].user_type = 1)
user_type = "DONOR";
else if (inboxMessages['inbox'][i].user_type = 0)
user_type = "CANDIDATE";
else if (inboxMessages['inbox'][i].user_type = 2)
user_type = "GROUP";

$("#inbox-table-body").append(
"<tr class='data-row' style='height: 75px;'> " +
"<td>" +
"<input type='hidden' id='user_type' value='" + inboxMessages['inbox'][i].user_type + "'/>" +
"<input type='hidden' id='read' value='" + inboxMessages['inbox'][i].read + "'/>" +
"<input type='checkbox' id='" + inboxMessages['inbox'][i].message_id + "'></input></td>" +
"<td>" +
"<p class='left'>" +
"<img class='td-avatar' style='margin-top: 0px !important;' src='/uploads/profile-pictures/" + inboxMessages['inbox'][i].image + "' alt='avatar'/>" +
"<br/>" +
"<span class='user-type'>" + user_type + "</span>" +
"</p></td><td>" +
"<h2 onclick='displayMessage(" + inboxMessages['inbox'][i].message_id + ");'>" + inboxMessages['inbox'][i].firstname + " " + inboxMessages['inbox'][i].lastname + "</h2><br/>" +
"<h3 class='message-subject' onclick='displayMessage(" + inboxMessages['inbox'][i].message_id + ");'>" + inboxMessages['inbox'][i].subject + "</h3><br/><br/>" +
"<h3 style='font-size: 0.7em; margin-top: -25px; float:left;'><span>" + inboxMessages['inbox'][i].datesent.toString().split(" ")[0] + "</span></h3>" +
"</td>" +
"<td><button class='delete-item' onclick='deleteMessage(" + inboxMessages['inbox'][i].message_id + ");' src='/images/delete-item.gif' alt='Delete Message' title='Delete Message' style='cursor: pointer; float:left; margin-left: 5px; margin-top:-3px;'></button></td>" +
"</tr>"
);
// check if the message has been read
if (inboxMessages['inbox'][i].read == 0) {
// not read
$("#message-subject").addClass('read-message');
} else {
// read
$("#message-subject").removeClass('read-message');
}
inbox_msg_count++;
}
}

现在,如果我警告 user_type 的值并读取,我会根据它迭代的消息得到正确的值。但当它输出时,它只使用第一条消息的值。

我需要能够根据这些值使用 jquery 动态设置消息样式。有人可以告诉我为什么这不起作用......

最佳答案

嗯,有一件事,您正在使用 ID 选择器:

$("#message-subject").addClass('read-message');

当你真正上课时:

<h3 class='message-subject'...

用途:

$(".message-subject").addClass('read-message');

其次,您正在进行分配 ( = ),而不是对 user_type 进行比较 ( == )。

我可以建议采用不同的方法而不是大的 if..then..else

使用数组来索引您的 user_types:

var user_type_labels = [ 'CANDIDATE', 'DONOR', 'GROUP' ];

function loadInboxTable() {

for (var i = 0; i < inboxMessages['inbox'].length - 1; i++) {
first_msg_id = inboxMessages['inbox'][0].message_id;

// One line instead of an if/then/else
var user_type = user_type_labels[ inboxMessages['inbox'][i].user_type ];
...

第三,您将多个具有相同 ID 的项目添加到 DOM 中。这是不合法的,并且会产生不确定的后果。

<input type='hidden' id='user_type' value='...
<input type='hidden' id='read' value='...

您需要为此使用类。

<input type='hidden' class='user_type' value='...
<input type='hidden' class='read' value='...

关于javascript - jquery不会更新动态生成的html,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9571556/

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