空间或不在jQuery中输出

时间:2010-07-01 09:23:31

标签: javascript jquery

我从XML中提取以下内容并将其放入jQuery变量中。

 links.append($("<a href='"+alink+"'></a>&nbsp;").html(desc));

...但是&nbsp;不会输出到页面上。我需要这个来分离输出上的hrefs

我也试过

links.append($("<a href='"+alink+"'></a>").html(desc));
    links.append($("&nbsp;"));

非常感谢!

3 个答案:

答案 0 :(得分:2)

$("<a href='"+alink+"'></a>&nbsp;")

是的,这实际上只是创建了<a>元素,并且丢弃了该元素。当您将字符串传递给看起来像(*)HTML的$()函数时,jQuery会在字符串中的第一个<和最后一个>之间创建一段标记。如果你有任何领先或尾随内容,它会被抛弃(**)。你可以通过说:

来欺骗jQuery
$("<a href='"+alink+"'></a>&nbsp;<!-- don't ignore me! -->")

这似乎没有在任何地方记录,没有任何意义,可能被认为是一个错误,但它已经有一段时间jQuery的正常行为所以它可能不会消失。

当您将HTML字符串直接传递给append函数(和其他操作方法)而不是通过$函数时,不会发生此行为。所以:

links.append("<a href='"+alink+"'></a>&nbsp;");

实际上确实保留了空间。但更好的方法是停止抛出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)

你可以尝试

 &#160;