$("<a href='"+alink+"'></a> ")
呀,這其實只是創建<a>
ele並放棄nbsp。當您將字符串傳遞到看起來像(*)HTML的$()
函數時,jQuery會在字符串中的第一個<
和最後一個>
之間創建一段標記。如果你有任何超出前導或尾隨的內容,它會被扔掉(**)。你可以說傻瓜的jQuery:
$("<a href='"+alink+"'></a> <!-- don't ignore me! -->")
這似乎並沒有被記錄任何地方,是沒有任何意義,而且可能會被認爲是一個錯誤,但它一直jQuery的一段時間的正常行爲,因此它可能不是離開。
當您將HTML字符串直接而不是通過$
函數傳遞給append
函數(以及其他操作方法)時,不會發生此行爲。所以:
links.append("<a href='"+alink+"'></a> ");
確實保持空間。但是,一個更好的出路,便是制止亂扔HTML字符串,所以你不必擔心含'
,<
或&
字符或者和工作更DOM風格alink
:
var link= $('<a/>');
link.attr('href', alink);
link.html(desc);
links.append(link);
links.append('\xA0');
,或者更簡潔,使用jQuery 1.4的props
說法快捷:
links.append($('<a/>', {href: alink, html: desc}));
links.append('\xA0');
假設desc
真的是一件應該包含HTML標記;如果不是,請改用text
。
(我用\xA0
的JavaScript字符串字面方式包括字符U + 00A0不間斷空格,因爲它比HTML實體引用短的整整兩個字符哇噢!)
(*:如何它是否告訴一個字符串是HTML?爲什麼通過檢查它是否有一個<
和>
字符,當然是按照這個順序。如果你嘗試使用一個具有這些字符的選擇器,它會被愚弄輝煌,jQuery,輝煌。(***))
(**:爲什麼看到的jQuery 1.4.2線125從match[1]
從第一<
-the組構建HTML片段在quickExpr
最後>
-and不是原來的。字符串或match[0]
)
(***:。我被諷刺的瘋狂過度超載$
功能是jQuery的最壞的特徵之一)
笑DOH,這對我的作品:) – c14kaa 2010-07-01 09:26:51