jq插入移除节点问题

    var temp=true;
 $(".chat-btn").click(function(){
         if(temp){
              $(this).parent().next().after($("#comment-reply-box"));
               console.log($(this).parent().next())
             }else{
                 $("#comment-reply-box").remove()
                 }    
                  temp=!temp  
     })

问题是这样的当我点击的时候插入一个div;再次点击的时候就移除;当我第三次点击的时候发现他就不插入div了;而我 console.log($(this).parent().next())都是同一个节点;请问这是怎么回事

阅读 2.1k
2 个回答

首先是不插入的问题:当第二次点击 $("#comment-reply-box").remove() 之后,第三次点击 $("#comment-reply-box") 就取不到任何东西啦因为已经从DOM树移除啦。可以一开始就保存下来这个变量:

var temp=true;
var $box = $("#comment-reply-box");
$(".chat-btn").click(function(){
        if(temp){
            $(this).parent().next().after($box);
        }else{
            $box.remove()
        }    
        temp=!temp  
     })
})

然后为什么 $(this).parent().next() 都是同一个节点这个,没看到你这边的html我暂时不知道是为啥。

//因为你第二次操作将dom元素删除了,第三次操作$('#comment-reply-box')已经是undefined
//将id=comment-reply-box的dom写成字符串
//再将js改造哈
var temp=true;
var box = '<div id="comment-reply-box"></div>';
var $box='';
$(".chat-btn").click(function(){
        if(temp){
            $(this).parent().next().after(box);
            $box=$('#comment-reply-box');
        }else{
            $box.remove()
        }    
        temp=!temp  
     })
})
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题