在追加之前如何逃脱?以下错误地附加
'<a here."="" goes="" string"="" title="Some " href="#">Hello</a>'
代码中的:
$(function(){
var t='Some "string" goes here.';
var jqueryObj=$('#elem');
jqueryObj.append('<a href="#" title="'+t+'">Hello</a>');
});
编辑后修订的代码
var $accounts=$('#accountList');
$accounts.find('li.accountList').remove();
for (var i = 1; i < data.o.a.length; i++) {
$accounts.append('<li class="item displayAccount">'
+'<input type="checkbox" checked="checked" class="cb" name="accounts[]" value="'+i+'" />'
+'<span class="name">'+data.o.a[i].name
+((data.o.a[i].e.length)?' <a class="displayError" href="#" title="'+escape(mkList(data.o.a[i].e))+'">Error</a>':null)
+'</span>'
+'</li>');
}
if(data.o.a[0].c.length) {$accounts.append('<li class="item displayAccount"><input type="checkbox" disabled="disabled" value="0"><span class="name">UNASSIGNED</span></li>');}
$accounts.find('a.displayError').displayError();
答案 0 :(得分:6)
jQuery有一个nice syntax用于安全地创建元素:
$('<a>', {
href: '#',
title: t,
text: 'Hello' // Replace `text` with `html` if you need to.
}).appendTo(jqueryObj);
你的代码很依赖字符串,所以我尽我所能,但它可以做得更漂亮:
for (var i = 1; i < data.o.a.length; i++) {
var $li = $('<li class="item displayAccount"></li>');
var $input = $('<input type="checkbox" checked="checked" class="cb" name="accounts[]" />').val(i).appendTo($li);
var $span = $('<span class="name"></span>').appendTo($li);
if (data.o.a[i].e.length) {
$('<a class="displayError" href="#">Error</a>').attr('title', mkList(data.o.a[i].e)).appendTo($span);
}
$li.appendTo($accounts);
}
答案 1 :(得分:2)
我想我会提供一个与Blender不同的答案,以防您不想使用该方法。
function escapeQuotes(str){
return str.replace(/"/g, '"');
}
将用"
替换双引号。