一个纠结的问题
<!doctype html> <html> <head> <meta charset="utf-8"> <title>存取元素的属性值</title> <style type="text/css"> *{margin:0;padding:0;} ul{list-style:none;} .demo{width:1024px;margin:0 auto;border:5px solid #ccc;overflow:hidden;height:800px;} li{float:left;} </style> <script type="text/javascript" src="js/jquery-1.9.1.min.js"></script> <script type="text/javascript"> $(function() { $('<span>'+$('ul').width()+'</span>').appendTo('textarea') }) </script> </head> <body> <div class="demo"> <ul> <li><img src="#" width="1000" height="800"/></li> <li><img src="#" width="1000" height="800"/></li> <li><img src="#" width="1000" height="800"/></li> <li><img src="#" width="1000" height="800"/></li> </ul> </div> <textarea></textarea> </body> </html>
起源于对方法的理解不透彻,appendTo,append都是源自原生javascript中的appendChild,
$('<span>'+$('ul').width()+'</span>')是一个jquery对象,它被添加到textarea中,但textarea中应该包含的是文本节点。因此,加入的内容不会被渲染出来,但浏览器也不会报错,并且可以继续操作其中的span元素的属性
因此,想要改变textarea中的内容,jquery只能通过html(),text(),value()方法来修改,不能通过节点相关操作