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('\'', '&#39;');

这在您的 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);

http://jsfiddle.net/bxxmhe03/6/