为什么jQuery为我的字符串添加反斜杠“\”字符?
问题描述:
我正在使用jQuery用一个字符串替换元素的内容,其中包含一些元素。以下是我使用创造价值$的代码,该字符串:为什么jQuery为我的字符串添加反斜杠“”字符?
var value = '<span class="fn">' + $("#fn_").val() + '</span>';
$("input", this).val(value);
然而,究竟是什么被输出具有退格字符的所有通过它,就像这样:
<span class="\"fn\"">Name</span>
我假设这可能是我的一个愚蠢的错误,但不知道我做错了什么?感谢任何建议!
编辑
为了清楚起见,这里是完整的代码,我创建了jEditable自定义输入类型,让我联编辑的vCard。
$.editable.addInputType('person', {
element : function(settings, original) {
var fn = $('<input id="fn_"/>');
var bday = $('<input id="bday_" />');
var wday = $('<input id="wday_" />');
var dday = $('<input id="dday_" />');
var spouse = $('<input id="spouse_" />');
$(this).append(fn);
$(this).append(bday);
$(this).append(wday);
$(this).append(dday);
$(this).append(spouse);
/* Hidden input to store value which is submitted to server. */
var hidden = $('<input type="hidden">');
$(this).append(hidden);
return(hidden);
},
content : function(string, settings, original) {
var $data = $(string);
var data = {};
$data.each(function() {
var $t = $(this);
data[$t.attr('class')] = {
class: $t.attr('class'),
value: $t.text()};
});
alert(data.length);
$("#fn_", this).val('Name');
$("#bday_", this).val('Born');
$("#wday_", this).val('Married');
$("#dday_", this).val('Died');
$("#spouse_", this).val('Spouse');
},
submit: function (settings, original) {
var value = "<span class=fn>" + $("#fn_").val() + '</span>' + '<span class=spouse>' + $("#spouse_").val() + '</span>' + '<span class=bday>' + $("#bday_").val() + '</span>' + '<span class=wday>' + $("#wday_").val() + '</span>' +'<span class=dday>' + $("#dday_").val() + '</span>';
$("input", this).val(value);
}
});
答
嗯,我好像用
'<span class=fn>'
代替
'<span class="fn">'
即来自各地的类名称去掉引号已经得到了这个工作。出于某种原因,报价被正确地放回到输出中,但是我无法使用多个类。
答
如果你想设置的HTML这是一个跨度内,做一个正确的做法是:
.empty().append($('<span class="fn"/>').text($("#fn_").val()))
或者,如果你想更换全部元素:
.replaceWith($('<span class="fn"/>').text($("#fn_").val()))
或者如果您只想删除类vcard
,请添加类fn
,并设置内容:
.removeClass('vcard').addClass('fn').text($("#fn_").val())
这可以确保文本框中的值在插入span
元素之前已正确地进行HTML转义。使用.val
来设置元素的HTML内容是不正确的;对此使用.html
,虽然在这种情况下它不是必需的。
答
您是否知道在将数据发送到服务器之前执行您的提交函数(看看Jeditable源代码),这意味着您的所有“跨度”被发送到服务器,所以可能编码您的元素的是你的服务器端脚本。
干杯。
你可以显示输出`value`的代码吗? – 2010-12-04 16:11:57
你在哪里输出你的价值? – WaiLam 2010-12-04 16:13:33
我使用jEditable,所以它是它的一个功能的一部分。已编辑上面的示例以显示 – 2010-12-04 16:19:03