jQuery技术

Jquery empty() remove() detach() 方法的区别(2)

字号+ 作者:H5之家 来源:H5之家 2015-10-23 14:32 我要评论( )

[html] !DOCTYPE html PUBLIC -//W3C//DTD HTML 4.01 Transitional//EN html head meta http-equiv=Content-Type content=text/html; charset=UTF-8 titleTest Jquery remove detach empty/title style p { backgro

[html] 
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" ""> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
<title>Test Jquery remove detach empty</title> 
<style> 
p {  
    background:yellow;  
    margin:6px 0; 
}  
p.off {  
    background: black;  

</style> 
<script src="js/jquery-1.8.0.min.js"></script> 
<script> 
    $(document).ready(function(){ 
         
        // JQuery 为P标签动态绑定click事件 
        $("p").click(function(){ 
            $(this).toggleClass("off"); 
        }); 
         
        var p; 
        $("#button").click(function(){ 
              if ( p ) { 
                p.appendTo("body"); 
                p = null; 
              } else { 
                p = $("p").detach(); 
            // p = $("p").remove(); 
            // p = $("p").empty(); 
              }  
        }); 
    });  
</script> 
</head> 
 
<body> 
  <p id="A">Hello <span>subNode</span></p> 
  how are 
  <p id="B">you? <span>subNode</span></p> 
   
  <input type="button" id="button" value="Attach/detach paragraphs" />  
 
</body> 
</html> 
运行该页面,点击按钮,删除;  再次点击按钮,删除的<p>标签,重新加入到body的底部,这里我们重点验证的是,重新加入后的绑定事件click是否有效【这里的click事件为,点击P标签,class在黄色和黑色之间切换】。
 

1)  验证detach方法


可以看到执行detach方法,重新添加之后,JQuery动态绑定的click事件,toggleClass生效,说明之前删除的时候没有把动态绑定的事件删除。

 


2)  验证remove方法
修改程序中以下部分:

[javascript]
// p = $("p").detach(); 
p = $("p").remove(); 
测试remove函数,同样是先删除在加入,执行完后的效果:


可以发现调用remove方法之后,再重新把删除的标签加入到body后时,发现JQuery动态绑定的事件,已经失效,点击P标签,class不能切换。说明在执行remove的时候,已经把JQuery动态绑定的事件删除了。

 


3)  验证empty方法:
要验证empty方法,要麻烦一点,在删除之后,重新加入之后,text为空,不能够点击测试click事件,因此我们需要新增一个按钮,为这种情况增加text,便于测试click事件。

代码如下:

[html]
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" ""> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
<title>Test Jquery remove detach empty</title> 
<style> 
p {  
    background:yellow;  
    margin:6px 0; 
}  
p.off {  
    background: black;  

</style> 
<script src="js/jquery-1.8.0.min.js"></script> 
<script> 
    $(document).ready(function(){ 
         
        // JQuery 为P标签动态绑定click事件 
        $("p").click(function(){ 
            $(this).toggleClass("off"); 
        }); 
         
        var p; 
        $("#button").click(function(){ 
              if ( p ) { 
                p.appendTo("body"); 
                p = null; 
              } else { 
                // p = $("p").detach(); 
                // p = $("p").remove(); 
                p = $("p").empty(); 
              }  
        }); 
         
        // 为删除之后重新加入的p标签加入text 
        $("#buttonA").click(function(){ 
            $("#A").text("Hello"); 
            $("#B").text("you?"); 
        }); 
    });  
</script> 
</head> 
 
<body> 
  <p id="A">Hello <span>subNode</span></p> 
  how are 
  <p id="B">you? <span>subNode</span></p> 
   
  <input type="button" id="button" value="Attach/detach paragraphs" /> <br/> 
  <input type="button" id="buttonA" value="addTextA" /> <br/> 
 
</body> 
</html> 
执行效果如图:

 

可以发现empty方法,没有删除动态绑定事件。


4)  补充讲解:
为了更好的理解这里所说的绑定事件是JQuery的动态绑定事件,我们修改一下程序,使用onclick属性,把click事件作为一个属性值,来静态绑定。

修改后的程序如下:

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • 7个有用的jQuery小技巧

    7个有用的jQuery小技巧

    2016-02-26 13:02

  • jQuery制作select双向选择列表

    jQuery制作select双向选择列表

    2016-02-26 11:00

  • 全面详细的jQuery常见开发技巧手册

    全面详细的jQuery常见开发技巧手册

    2016-02-26 10:02

  • 强大的jQuery移动插件Top 10

    强大的jQuery移动插件Top 10

    2016-02-25 09:05

网友点评
"