append函数不返回附加的对象吗?

时间:2010-11-14 11:42:08

标签: javascript jquery

假设this是dom中的某个现有块级元素而imagehttp://www.google.com/images/srpr/nav_logo25.png,则执行以下操作无效:

$(this).append('<img>').attr('src', image).load(function() { alert('loaded'); });

是否应按如下方式完成?:

$(this).append($('<img>').attr('src', opts.image).load(function() { alert('loaded'); }));

或者它应该以其他方式完成?

2 个答案:

答案 0 :(得分:1)

.append()返回您追加的对象,以获取您在链中追加的对象,改为使用.appendTo()

$('<img>').appendTo(this).load(function() { alert('loaded'); })
                         .attr('src', opts.image);

两个版本都会返回之前链中的内容...但由于您要处理<img>,请使用.appendTo()表单。另外,为了获得可靠的负载结果,请在设置src之前附上您的加载处理器,如上所述。

答案 1 :(得分:0)

不, append 会返回您要追加的jQuery对象。来源(1.4.4)

append: function() {
    return this.domManip(arguments, true, function( elem ) {
        if ( this.nodeType === 1 ) {
            this.appendChild( elem );
        }
    });
}