所以我试图检查收件箱页面上的一堆div,我从AJAX调用返回一个数组,以了解更改字体样式的div。要实现这一点,我必须首先检查他们的数据值属性,然后添加/删除一个类(粗体与正常的读取/未读消息)。问题是,当我引用messageDiv对象时,它会切换页面上的所有消息。循环遍历消息对我来说最有意义,但我不知道如何存储div数组来实现这一点。
data['messages']=[3,5,8,9]
var messageDiv=$('.widget .inbox-row');
if (data['status']=='A'){//read
if ($.inArray(messageDiv.data('value'),data['messages']) && messageDiv.hasClass('unread-msg')) {
messageDiv.removeClass('unread-msg').addClass('read-msg');
}
}
if (data['status']=='N'){//unread
if ($.inArray(messageDiv.data('value'),data['messages']) && messageDiv.hasClass('read-msg')) {
messageDiv.removeClass('read-msg').addClass('unread-msg');
}
}
这是消息的样子,在页面上多次迭代:
<div class="<?php echo $message_read_status; ?> inbox-row" data-value="<?php echo $messageid; ?>" >
<?php echo $body; ?>
</div>
真诚地感谢您的帮助。对不起,如果这是一个非常具体的问题。我试图让它尽可能不具体。
答案 0 :(得分:1)
问题是e
是一组元素,所以当你说messageDiv.data('value')
时,它会返回集合中第一个元素的数据值。
您需要迭代数组中的每个项目并针对每个项目运行条件
var messageDiv = $('.widget .inbox-row');
messageDiv.each(function () {
var $this = $(this);
if (data['status'] == 'A') { //read
if ($.inArray($this.data('value'), data['messages']) > -1 && $this.hasClass('unread-msg')) {
$this.removeClass('unread-msg').addClass('read-msg');
}
} else if (data['status'] == 'N') { //unread
if ($.inArray($this.data('value'), data['messages']) > -1 && $this.hasClass('read-msg')) {
$this.removeClass('read-msg').addClass('unread-msg');
}
}
})