Используйте JQuery для создания привязки
Я хочу использовать jquery для сборки HTML следующим образом:
<li><a href="#"><span class="play"></span><span class="trackName">Track Name</span></a></li>
Кажется простым, но я не могу понять, как включить теги HTML как часть моего якорного текста.
Если я использую что-то вроде:
$("<a />", { text: $('<SPAN class="play" />') + "Track Name" })
тогда теги span будут экранированы.
Ответы
Ответ 1
Существует несколько способов сделать это, включая (но не ограничиваясь этим):
// one big string
$('<a href="#"><span class="play"></span><span class="trackName">Track Name</span></a>')
// create <a> then append() the span
$('<a></a>').attr("href","#")
.append('<span class="play"></span><span class="trackName">Track Name</span>');
// create <a> then set all of its contents with html()
$('<a></a>').attr("href","#")
.html('<span class="play"></span><span class="trackName">Track Name</span>');
// append spans created earlier:
var spans = $('<span class="play"></span><span class="trackName">Track Name</span>');
var a = $('<a></a>').append(spans);
Обратите внимание, что .html()
заменяет любое существующее содержимое, а .append()
добавляет к концу. Поэтому, учитывая, что у вас есть два элемента span в вашем примере, вы можете создавать их самостоятельно и добавлять их по одному за раз:
$('<a href="#"></a>').append('<span class="play"></span>')
.append('<span class="trackName">Track Name</span>');
Ответ 2
Отбросьте внутренний конструктор jQuery:
$("<a />", { text: '<SPAN class="play" /> Track Name' });
jsFiddle.
или, если вы хотите, чтобы код был HTML в ссылке:
$("<a />", { html: '<SPAN class="play" /> Track Name' });
Ответ 3
var link = $("<a>");
link.attr("href","http://www.google.com");
link.attr("title","Google.com");
link.text("Google");
link.addClass("link");
Ответ 4
//overwrites the innerHTML of all anchors *selector must be changed to more specific
$('a').html('<span class="play"></span><span class="trackName">Track Name</span>');
//wraps existing text and prepends the new span
$('a').wrapInner('<span class="trackName">')
.prepend('<span class="play"></span>');
http://jsfiddle.net/gaboesquivel/f2dcN/3/
Ответ 5
Это то, с чем я в конце концов пошел:
$('<a>', { className: 'trackName', href: contentPath + 'tracks/' + t.fileName } )
.append('<span class="play" />')
.append('<span class="trackName"></span>')
.append(t.trackName)