开发者社区> 问答> 正文

插入用jquery创建的元素和直接插入字符串的区别?

( function() {
    var $div = $( '<div></div>' ).html( '我是jquery创建的' );
    var div = '<div>我是字符串</div>';

    $( 'body' ).append( $div);
    $( 'body' ).append( div );
} )()

试了一下, 结果都是一样.

对于动态插入元素到页面中, 这两种方式有什么本质上的区别?
哪一种方案更好?

展开
收起
小旋风柴进 2016-05-27 10:10:54 2057 0
1 条回答
写回答
取消 提交回答
  • `var $div = $( '

    ' ).html( '我是jquery创建的' );
    $( 'body' ).append( $div);`
    第一句:
    先要createElement一个div的element对象,再传给jQuery返回一个jQuery对象;
    .html()是要先清空其内的所有内容,然后再向其内填充参数中的内容(即那段字符串);
    第二句:
    .append($div)这句,.append()会先判断参数是否为jQuery对象,然后将其追加 .前面的对象中(这里忽略无关题意的细节)

    `var div = '

    我是字符串
    ';
    $( 'body' ).append( div );`
    第一句:
    只是创建一段字符串而已,然后赋值给div;
    第二句:
    .append(div),跟上面说的一样,会先判断这个div是否为jQuery对象,如果不是,先转为jQuery对象。所以这里也就类似之前那种情况中的第一句:createElement一个div的element对象,再传给jQuery返回一个jQuery对象。然后就跟第一种第二句后边一样了。

    总结一下:
    两种区别就是

    生成element的时机不同;
    效率上,第一种比第二种多了清空和插入内容的步骤。
    建议:
    $( '<div></div>' ).html(...)一般不会这么用,如果element对象是当前域中动态创建的,那么一般都会像第二种方式来创建。一般.html(...)这种情况,.之前是获取页面中已存在的element。

    2019-07-17 19:17:10
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关课程

更多

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载