Jquery append自动解码HTML编码字符串

jquery append automatically decodes html encoded string

本文关键字:编码 编码字符 字符串 HTML 解码 append Jquery      更新时间:2023-09-26

我有一个这样的字符串:

  var b = "<button type='button' onclick='javascript:"+f+"('""+ encodedString+"'");'> hi</button>"
    //encodedString = "a &quot; &lt;hr&gt; &lt;br&gt;"

之后,我做了如下操作:

$('li').append(b);

在此之后,encodedString被解码,我的onclick不工作,因为&quot成为"

不通过html直接设置click事件,而是绑定一个事件监听器。eval(f)允许您通过字符串引用函数。如果可能的话,我建议传递对函数的直接引用。

如果函数在全局作用域中定义,则使用window[f]。注意:如果f看起来像Math.round,这将不起作用,因为window["Math.round"] != window["Math"]["round"] .

//f is a string which contains a single function name.
var b = $('<button>').click(function(){
   eval(f)(encodedString); 
});
$('li').append(b);

如果f是一个动态变量,它会改变(例如,在循环中),将代码包装在一个匿名函数中:

(function(f){
    var b = $('<button>').click(function(){
       f(encodedString); 
    });
    $('li').append(b);
})(eval(f));