var activeMsg=[]; // Active Users
var noactiveMsg=[]; // Non-Active Users with a Pending Message
var noactiveNomsg=[]; // Non-Active Users without a Pending Message
$('div.chatmember').each(function() {
currentMember=$(this);
if($(this).children().children('div').hasClass('chatactivestatus_online')) {
alert('online');
activeMsg.push(currentMember);
}
if($(this).children().children('div').hasClass('chatactivestatus_offline')) {
alert('offline');
noactiveMsg.push(currentMember);
}
});
$.each(noactiveMsg, function(i, e){
$('#chatCenterMembers').append(e.html());
})
上面的代码是查询DOM结构,如下所示:
<div id="chatCenterMembers">
<div class="chatmember">
<a class="ststusTitle">
<div class="chatactivestatus_online"></div>
除currentMember=$(this);
外,一切正常
我认为这应该保持<div class="chatmember">
当我在上面的代码末尾执行追加时,它不会将<div class="chatmember">
添加回dom。它仅添加其子元素。
答案 0 :(得分:0)
我认为你只是向前跑了一下。使用你的js,$(this)
将引用你的内部div。 $(this).parent()
将引用外部的。
一些HTML
<div id="chatCenterMembers">
<div id="adam" class="chatmember">
hello!
</div>
</div>
js
$(function(){
$("div.chatmember").each(function(){
// current member is now div#adam
var currentMember = $(this);
currentMember.css('border', '5px solid blue');
// parent of currentMember references div#chatCenterMembers
currentMember.parent().css('border', '5px solid red');
});
});
答案 1 :(得分:0)
尝试:
$('div.chatmember').each(function(domEle){
currentMember=$(domEle);
答案 2 :(得分:0)
所以你在这里发出这一行:
$('#chatCenterMembers').append(e.html());
,更具体地说:e.html()
评估.html()
的jQuery规范:
获取匹配集中第一个元素的HTML内容 元件。
表示.html()
返回选择的子内容,而不是选择本身。
你想要做的只是使用.append()
,这将附加整个选定的div而不仅仅是它的孩子