2011-04-04 120 views
1

誰能幫我明白爲什麼這行不創建一個鏈接的圖像:問題關於jQuery的.append()

var img = new Image(); 
$('#id').html('<a href="http://google.com">').append(img).append('</a>'); 

我設置IMG屬性(SRC,ALT ...等) ,我只是把這些線路放在一邊,因爲它們不相關。不應該將DIV的HTML設置爲HREF,然後是圖像,然後是關閉A標籤?這對我不起作用,我是否以這種錯誤的方式去做?

回答

2

這應做到:

$(img).appendTo('#id').wrap('<a href="http://google.com" />'); 

現場演示:http://jsfiddle.net/simevidas/A4HqE/1/


jQuery的html()會自動關閉你的HTML元素。在這裏看到:http://jsfiddle.net/simevidas/Ut2pQ/


更好的解決方案:

$('<a href="http://google.com" />').append(img).appendTo('#id'); 

該解決方案是更好,因爲這裏的DOM操縱只有一次(當錨附加)。在我上面的原始解決方案中,DOM被操作了兩次(1. IMG被附加,2. ANCHOR被包裹在圖像中)。

現場演示:http://jsfiddle.net/simevidas/A4HqE/2/

+0

輝煌,wrap方法完美。 – 2011-04-04 18:44:09

+0

@Jon我用更好的解決方案更新了我的答案。 – 2011-04-04 19:03:22

1

追加是一個棘手的標籤,有時它不符合你的期望。

在許多情況下,它更容易使用appendTo並實際構建元素。

你必須追加到...它不像一個字符串生成器。 嘗試:

$('<a>').attr({'id': 'aId' 'href': '[path for link]'}).appendTo('#divId'); 
$('<img>').attr('src', '[path to image]').appendto('#aId'); 

如果您已經使用內置您new Image()可以使用它的ID作爲選擇追加到錨...可以追加到div你的形象。

0

.append需要整整標籤作爲輸入,而不是開放標籤:

$('#id').html('<a href="http://google.com"></a>').append(img); 
0

我只是這樣做:

$('#id').append($('<a>').attr('href', 'http://www.google.com').append(img)); 

當然你要設置的所有屬性爲你的形象在任何事情都可以正常工