2012-01-19 85 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/