Javascript 将jQuery方法转换为字符串

Javascript 将jQuery方法转换为字符串,javascript,jquery,Javascript,Jquery,目前,我正在记录Jquery所做的所有更改,如下所示: $.fn.meChangeText = function ($text,$textpath) { $(this).html($text); //I am storing the code block here storing in a string $codeblock = $codeblock + "\n" + "$(\"" + $textpath + "\").

目前,我正在记录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\");" 使现代化 我为什么要这样做


这是因为我想将所有更改存储在数据库中

只需将文本存储在数组中:

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());
})

只需将文本存储在数组中:

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());
})

这是我的解决方案,我相信有一个比我更好的解决方案:

$.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; }; 然而,上述解决方案不会将代码块转换为字符串,而是将方法签名硬编码为字符串。因此,将此方法签名转换为字符串$this.html$text;我必须将方法签名硬编码为字符串,例如$temp='$this.html$text;';`


如果您有更好的解决方案,请与他人分享,以使他人受益。

这是我的解决方案,我相信有一个比我更好的解决方案:

$.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; }; 然而,上述解决方案不会将代码块转换为字符串,而是将方法签名硬编码为字符串。因此,将此方法签名转换为字符串$this.html$text;我必须将方法签名硬编码为字符串,例如$temp='$this.html$text;';`


如果您有更好的解决方案,请与他人分享,以使他人受益。

您能解释更多有关转换为字符串的信息吗?为什么需要它?因为如果它是用于调试的,那么最好使用“console.log”,因为它不是用于调试的。由我来存储编辑内容。当用户需要查看他所做的更改时,我希望执行存储在字符串中的代码。我之所以需要这些代码,是因为我将Jquery代码块存储在数据库中。序列化DOM元素并不简单。如果元素没有ID怎么办?你真的应该编辑你的问题,并用一个更好的例子对你想做什么以及为什么要做提供一个恰当的描述。你能解释一下转换为字符串的更多信息吗?你为什么需要它?因为如果它是用于调试的,那么最好使用“console.log”,因为它不是用于调试的。由我来存储编辑内容。当用户需要查看他所做的更改时,我希望执行存储在字符串中的代码。我之所以需要这些代码,是因为我将Jquery代码块存储在数据库中。序列化DOM元素并不简单。如果元素没有ID怎么办?你真的应该编辑你的问题,并用一个更好的例子来恰当地描述你想做什么以及为什么要做。上面的例子只是一个文本例子。它必须存储在文本字符串中,因为我还将更改元素的css。上述问题被简化了。我不是要存储文本,而是要存储代码块。@madi:嗯,这听起来像是。元编程和代码生成几乎从来都不是一个解决方案。我已经更新了我的问题。我希望我能说清楚。原因是我想将所有编辑存储为一个代码块,以便在用户恢复到某个版本时运行脚本。上面的示例只是一个文本示例。它必须存储在文本字符串中,因为我还将更改元素的css。上述问题被简化了。我不是要存储文本,而是要存储代码块。@madi:嗯,这听起来像是。元编程和代码生成几乎从来都不是一个解决方案。我已经更新了我的问题。我希望我能说清楚。原因是我想将所有编辑存储为一个代码块,以便在用户恢复到某个版本时运行脚本。