目前我正在记录Jquery所做的所有更改:
$.fn.meChangeText = function ($text,$textpath) { $(this).html($text); //I am storing the code block here storing in a string $codeblock = $codeblock + "\n" + "$(\"" + $textpath + "\").html(\"" + $text + "\");" };
还有另一种方法可以将$(this).html($ text)函数转换为字符串吗?这意味着我要改变:
$("#id1").text("I am changing");
我希望它以字符串形式出现:
var code = "$(\"#id1\").text(\"I am changing\");"
为什么我要这样做?
这是因为我想存储数据库中所做的所有更改。
答案 0 :(得分:4)
只需将文本存储在数组中:
history = {}
$.fn.meChangeText = function (text, textpath) {
if(!history[textpath])
history[textpath] = [];
history[textpath].push($(textpath).html());
$(textpath).html(text)
})
,撤消功能将如下:
$.fn.undo = function (textpath) {
if(!history[textpath])
return
$(textpath).html(history[textpath].pop());
})
答案 1 :(得分:0)
这是我的解决方案,我相信与我相比,有更好的解决方案:
$.fn.ChangeText = function ($text,$textpath) { $(this).html($text); //change the textbox $temp = '$(this).html($text);'; //make a copy of the change in String $temp = $temp.replace("this",'\"'+$textpath+'\"'); $temp = $temp.replace("$text",'\"'+$text+ '\"'); $data.code = $data.code + $data.code; };
但是,上述解决方案不会将代码块转换为String,而是将“硬编码”方法签名转换为String。所以要将此方法签名转换为String $(this).html($text); I had to "hardcode" the method signature as String as such
$ temp ='$(this).html($ text);';`。
如果您有更好的解决方案,请分享,以便其他人可以受益。