jquery追加自动解码html编码的字符串

时间:2011-10-15 10:50:14

标签: javascript jquery html

我有一个这样的字符串:

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

之后我做了类似的事情:

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

之后,encodeString被解码,我的onclick不起作用,因为&quot成为"

1 个答案:

答案 0 :(得分:1)

不是通过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));