jQuery的parseHTML方法

    // data html字符串
    // context 如果指定了context,则碎片将在此范围内被创建,默认是document
    // keepScripts 如果是true,则将有scripts加入html字符串
    parseHTML: function( data, context, keepScripts ) {
        //如果data不存在或者data不是字符串则直接返回null
        if ( !data || typeof data !== "string" ) {
            return null;
        }
        // 如果context是Boolean则说明用户没有传入context,而是传入了keepScripts
        if ( typeof context === "boolean" ) {
            keepScripts = context;
            context = false;
        }
        // 如果用户没传入context,则默认context==document
        context = context || document;
        // 使用正则检测data是不是纯标签
        var parsed = rsingleTag.exec( data ),
            scripts = !keepScripts && [];

        // 如果是纯标签
        if ( parsed ) {
            // 创建元素节点
            return [ context.createElement( parsed[1] ) ];
        }
        //如果不是纯标签,则进入buildFr函数继续处理,该方法返回html碎片。
        parsed = jQuery.buildFragment( [ data ], context, scripts );
        // 创建script标签??
        if ( scripts ) {
            jQuery( scripts ).remove();
        }
   // 将生成的节点放入数组中返回
        return jQuery.merge( [], parsed.childNodes );
    },

posted @ 2013-12-06 09:20  charling  阅读(673)  评论(0编辑  收藏  举报