在jQuery&中选择一个div附加到DOM

时间:2011-08-18 06:04:47

标签: jquery

        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。它仅添加其子元素。

3 个答案:

答案 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');

    });
});

see it working here on jsFiddle

答案 1 :(得分:0)

尝试:

$('div.chatmember').each(function(domEle){
    currentMember=$(domEle);

答案 2 :(得分:0)

所以你在这里发出这一行:

$('#chatCenterMembers').append(e.html());

,更具体地说:e.html()

评估.html()的jQuery规范:

  

获取匹配集中第一个元素的HTML内容   元件。

表示.html()返回选择的子内容,而不是选择本身。

你想要做的只是使用.append(),这将附加整个选定的div而不仅仅是它的孩子