我从XML中提取以下内容并将其放入jQuery变量中。
links.append($("<a href='"+alink+"'></a> ").html(desc));
...但是
不会输出到页面上。我需要这个来分离输出上的hrefs
我也试过
links.append($("<a href='"+alink+"'></a>").html(desc));
links.append($(" "));
非常感谢!
答案 0 :(得分:2)
$("<a href='"+alink+"'></a> ")
是的,这实际上只是创建了<a>
元素,并且丢弃了该元素。当您将字符串传递给看起来像(*)HTML的$()
函数时,jQuery会在字符串中的第一个<
和最后一个>
之间创建一段标记。如果你有任何领先或尾随内容,它会被抛弃(**)。你可以通过说:
$("<a href='"+alink+"'></a> <!-- don't ignore me! -->")
这似乎没有在任何地方记录,没有任何意义,可能被认为是一个错误,但它已经有一段时间jQuery的正常行为所以它可能不会消失。
当您将HTML字符串直接传递给append
函数(和其他操作方法)而不是通过$
函数时,不会发生此行为。所以:
links.append("<a href='"+alink+"'></a> ");
实际上确实保留了空间。但更好的方法是停止抛出HTML字符串,因此您不必担心alink
包含'
,<
或&
字符,并且工作正常更多DOM风格:
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 NON-BREAKING SPACE,因为它比HTML实体引用短两个字符。哇哇!)
(*:它是如何告诉字符串是HTML的?为什么,通过检查当中是否有<
和>
字符,当然是这样。意思是'如果你试图使用一个包含那些字符的选择器,我会被愚弄。很棒,jQuery,很棒。(***))
(**:为什么?请参阅jQuery 1.4.2的第125行。它从match[1]
构建HTML片段 - 来自<
的最后一个>
的组{1}} - 而不是原始字符串或quickExpr
。)
(***:我是讽刺的。match[0]
函数的疯狂超载是jQuery最糟糕的功能之一。)
答案 1 :(得分:0)
你最好用css设计风格,比如:
links.append($("<a class='link' href='"+alink+"'></a>").html(desc));
在css中:
a.link {
padding-left : 5px ;
padding-right : 5px ;
}
答案 2 :(得分:0)
你可以尝试