2010-07-01 6 views
0

У меня есть следующее, извлеченное из XML и помещаемое в переменную jQuery.пробел или   не выводится в jQuery

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

... однако &nbsp; не выводит на страницу. Мне это нужно, чтобы отделить hrefs на выходе

Я также попытался

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

Большое спасибо!

ответ

0

Вам лучше стиль с помощью CSS, что-то вроде:

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

в CSS:

a.link { 
padding-left : 5px ; 
padding-right : 5px ; 
} 
+0

лол DOH, что работает для меня :) – c14kaa

0

вы могли бы попробовать

&#160; 
+0

Боюсь, это не работает. – c14kaa

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

Да, это на самом деле только создавая <a> ele и отбрасывая nbsp. Когда вы передаете строку в функцию $(), которая выглядит как (*) 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 неразрывный пробел, как это целых два символа короче, чем ссылки HTML сущности Woohoo.!)

(*: как он указывает, что строка является HTML? Почему, проверяя, есть ли в ней символ < и >, в этом порядке, конечно. Значение этого будет обмануто, если вы попытаетесь использовать селектор, который имеет эти символы в Блестящий, jQuery, блестящий.(***))

(**: почему увидеть линии 125 из JQuery 1.4.2 Это создает фрагмент HTML из match[1] -группы из первого < до последнего > в quickExpr й не оригинал. строка или match[0])

(***:... Я сарказм безумный над-перегрузкой функции $ является одним из худших черт JQuery в)

Смежные вопросы