将jQuery方法转换为字符串

时间:2013-08-12 08:53:45

标签: 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 + "\").html(\"" + $text + "\");"

};

还有另一种方法可以将$(this).html($ text)函数转换为字符串吗?这意味着我要改变:

    $("#id1").text("I am changing");

我希望它以字符串形式出现:

 var code = "$(\"#id1\").text(\"I am changing\");"

更新

为什么我要这样做?

这是因为我想存储数据库中所做的所有更改。

2 个答案:

答案 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);';`。

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