2012-01-19 53 views
0

我想要做的是:jQuery的不能串追加到对象

线上缠绕$feedbodyimage.eq(0)一个链接,然后附加整个事情变成$feedbodycontainer

但它不工作。输出是[object object]

请帮

var $feedbodycontainer = $("<div class='feedbody'></div>"); 
var $feedbodyimage = $feedbody.find("img"); 

    if($feedbodyimage.length) { 

     $feedbodycontainer.append($feedbodyimage.eq(0));// it works 
      //$feedbodycontainer.append("<a href='"+feedlink+"' target='_blank'>"+$feedbodyimage.eq(0)+"</a>";) // it doen't work. output is [object object] hyperlinked. 

    } 

回答

1

添加此作为一个单独的答案。

我的其他答案显示了问题和解决方法,但实际上你应该以不同的方式开始。

var $feedbodycontainer = $("<div class='feedbody'></div>"); 
var $feedbodyimage = $feedbody.find("img"); 

if($feedbodyimage.length) { 

     // Create the <a> element, append the <img> to the <a>, 
     // and append the <a> to the container. 
    $("<a>",{href:feedlink, target:"_blank"}) 
     .append($feedbodyimage.eq(0)) 
     .appendTo($feedbodycontainer); 
} 

如果你想要的图像,而不是原来的副本,改变了...

.append($feedbodyimage.eq(0)) 

这个...

.append($feedbodyimage.eq(0).clone(true)) 
+1

感谢您的输入! –

2

这是因为jQuery的对象不是HTML,以及原生DOM元素不是HTML。

HTML是HTML。所以如果你想连接它,你需要把它作为HTML。

var HTML = $feedbodyimage[0].outerHTML; 

$feedbodycontainer.append("<a href='"+feedlink+"' target='_blank'>"+ HTML +"</a>"); 

所以[0]获取本机的DOM元素在指数0,并且outerHTML使得它和它作为一个HTML字符串内容。


注意.outerHTML不Firefox支持,但支持即将到来。

下面是outerHTML可能的补丁......

function outerHTML(el) { 
    return el.outerHTML || 
      document.createElement('div') 
        .appendChild(el.cloneNode(true)) 
        .parentNode.innerHTML; 
} 

...到你会传递一个DOM元素,它会返回HTML字符串...

var HTML = outerHTML($feedbodyimage[0]); 
+0

我需要它来运行在FF中也是如此。有没有解决办法? –

+0

@Shadow_boi:我添加了一个'outerHTML'函数来作为补丁。 – 2012-01-19 21:52:31

+0

@Shadow_boi:虽然有比使用HTML更好的解决方案。我将为此添加一个单独的答案 – 2012-01-19 21:54:22

0

虽然建立html字符串,你应该使用html方法来得到它的html。由于html方法会给内部html,所以你应该得到外部html。所有的浏览器都不支持OuterHTML,所以有一个解决办法。试试这个

var html = ($feedbodyimage.get(0).outerHTML || 
      $feedbodyimage.eq(0).clone(true).wrap('<div />').parent().html()); 

$feedbodycontainer.append("<a href='" + feedlink + "' target='_blank'>" 
     + html +"</a>"); 
0

使用jQuery的wrap功能是这样的:

$feedbodyimage.eq(0).wrap('<a href="your_location" />').parent().appendTo($feedbodycontainer); 

这里试试这个捣鼓出它的工作http://jsfiddle.net/BLsFz/