appendTo 的撇号问题
apostrophe issue with appendTo
下面是我试过的两个代码:
$( "<li class='item' id='item' name='"+infoitem+"'>"+ title +"</li>" ).appendTo( "#sortable" );
$( "<li class='item' id='item' name='"+infoitem+"'/>").html(title).appendTo( "#sortable" );
包含 postrophe 的标题会引发错误并破坏代码...
如何使用 \' 过滤文本,然后 re-add 使用 apostrophe 将其作为可接受的 html 过滤?
任何建议都很好。
编辑:
我得到了一个工作示例,说明为什么它不起作用
http://jsfiddle.net/cowmoohard/bxxmhe03/4/
原文中post忘了说appendTo是在一个函数中,它需要包含一串字符space。请看上面的例子。只需在字符串中用 ' 编辑它,然后它就会停止工作。
试试这个 :)
$( "#sortable" ).append("<li class='item' id='item' name='"+infoitem+"'>"+ title +"</li>");
尝试对 javascript 使用 ',对 HTML 强制使用 "。它看起来像:
$('<li class="item" id="item" name="' + infoitem + '">' + title + '</li>').appendTo('#sortable');
$('<li class="item" id="item" name="' + infoitem + '"/>').html(title).appendTo('#sortable');
编辑 1:
var addedTitle="I'am a supe long string".replace('\'', ''');
这在您的 fiddler 代码中。
Edit2:如果你需要替换多个东西:
String.prototype.replaceAll = function (searchvalue, newvalue) {
return this.split(searchvalue).join(newvalue);
};
您的 fiddle 阐明了实际问题:
content = "<input type='button' value='Add' onclick='addme(\"" + addedTitle + "\")' />"
document.getElementById("display").innerHTML = content;
问题是上面的代码会生成以下内容:
<input type='button' value='Add' onclick='addme("some'string")' />
您会注意到 onclick
中有一个单引号,它是单引号。这就是破坏。您可以使用 \
转义单引号。
但是,更好的方法是摆脱内联 onclick
并这样做:
var input = $("<input type='button' value='Add'/>").click(function(){
addme(addedTitle);
});
$("#display").append(input);
下面是我试过的两个代码:
$( "<li class='item' id='item' name='"+infoitem+"'>"+ title +"</li>" ).appendTo( "#sortable" );
$( "<li class='item' id='item' name='"+infoitem+"'/>").html(title).appendTo( "#sortable" );
包含 postrophe 的标题会引发错误并破坏代码...
如何使用 \' 过滤文本,然后 re-add 使用 apostrophe 将其作为可接受的 html 过滤?
任何建议都很好。
编辑:
我得到了一个工作示例,说明为什么它不起作用 http://jsfiddle.net/cowmoohard/bxxmhe03/4/
原文中post忘了说appendTo是在一个函数中,它需要包含一串字符space。请看上面的例子。只需在字符串中用 ' 编辑它,然后它就会停止工作。
试试这个 :)
$( "#sortable" ).append("<li class='item' id='item' name='"+infoitem+"'>"+ title +"</li>");
尝试对 javascript 使用 ',对 HTML 强制使用 "。它看起来像:
$('<li class="item" id="item" name="' + infoitem + '">' + title + '</li>').appendTo('#sortable');
$('<li class="item" id="item" name="' + infoitem + '"/>').html(title).appendTo('#sortable');
编辑 1:
var addedTitle="I'am a supe long string".replace('\'', ''');
这在您的 fiddler 代码中。
Edit2:如果你需要替换多个东西:
String.prototype.replaceAll = function (searchvalue, newvalue) {
return this.split(searchvalue).join(newvalue);
};
您的 fiddle 阐明了实际问题:
content = "<input type='button' value='Add' onclick='addme(\"" + addedTitle + "\")' />"
document.getElementById("display").innerHTML = content;
问题是上面的代码会生成以下内容:
<input type='button' value='Add' onclick='addme("some'string")' />
您会注意到 onclick
中有一个单引号,它是单引号。这就是破坏。您可以使用 \
转义单引号。
但是,更好的方法是摆脱内联 onclick
并这样做:
var input = $("<input type='button' value='Add'/>").click(function(){
addme(addedTitle);
});
$("#display").append(input);