.clone( )
<div class="demo"></div> <script src = "./jquery.js"></script> <script> $('.demo').clone().appendTo('body');//克隆 demo上的属性也会克隆过来(自定义属性也可) </script>
<div class="demo" style="width:100px; height:100px;background-color:red"></div> <script src = "./jquery.js"></script> <script> $('.demo').click(function(){ alert(0); }); $('.demo').clone(true).appendTo('body'); //事件在clone()里添加参数才能克隆 (并不是所有事件都能克隆)
$('.demo').prop('data-log','1111') console.log( $('.demo').clone.prop('data-log','1111') )//prop里的信息克隆不出来(用data) //data jQuery dom 存信息存数据存状态 (data信息存在jQuery对象上,jQuery对象与dom对象有一定映射关系) //data 用法: $('.demo').data('data-duyi','cg')//值不会存在行间样式之中,但是可以取出来 $('.demo').data({ name:'li', age:15, sex:true });//可以传多个值 在控制台取值:$('.demo').data('name'),可以取出name值 //age是15 取出的就是数字15 用attr取值都是字符串
<style> .tpl{ display:none; } </style> <body> <table class="stb"> <tr> <th>姓名</th> <th>年龄</th> <th>班级</th> </tr> <tr class="tpl"> <td></td> <td></td> <td></td> </tr> </table> <script src="./jquery.js"></script> <script> //克隆使用的场景 var studentArr = [ { name: 'li', age: 18, class: 3 }, { name: '小王', age: 20, class: 2 }, { name: '小李', age: 23, class: 1 }, ]; var oWrapper = $('.stb') studentArr.forEach(function(ele,index){ var oCloneDom = $('.tpl').clone().removeClass('tpl'); oCloneDom .find('td') .eq(0) .text(ele.name) .next() .text(ele.age) .next() .text(ele.class) oWrapper.append(oCloneDom); }) </script>
.data( )
data跟dom 有映射但是不是直接操作dom,所以效率更高 (attr就需要dom操作)
jQuery中一般用data ,比attr和prop更高效,省去dom操作