1 replaceTmById:function(_box){
2 var $parent=_box||$(document);
3 return this.replace(RegExp("({[A-Za-z_]+[A-Za-z0-9_]*})","g"),function($1){
4 var $input=$parent.find("#"+$1.replace(/[{}]+/g,""));
5 return $input.size()>0?$input.val():$1;});},主要不明白的是3、4、5句,包括正则表达式和这个$1代表的意思不是很理解

解决方案 »

  1.   

    看看这个,有帮助
    http://apps.hi.baidu.com/share/detail/7168280
      

  2.   

    我给你分解
    return this.replace(RegExp,value);//就是根据正则表达式替换字符串,能懂吧
    RegExp ==> RegExp("({[A-Za-z_]+[A-Za-z0-9_]*})","g") //这个正则表达式是找形如{good_i0009}这样的字符串。其实就是{}里面包含一个字母数字下划线的字符串,其中首字母不能为数字。
    value ==>
    function($1){
      var $input=$parent.find("#"+$1.replace(/[{}]+/g,""));
      return $input.size()>0?$input.val():$1;
    }
    //这里的value是一个匿名函数。他传入一个参数$1,其实就你前面RegExp获得的匹配结果,输出一个处理后的结果。现在分解这个函数里的2行代码
    var $input=$parent.find("#"+$1.replace(/[{}]+/g,"")); //找id为$1捕获到的{string}中的string的元素
    return $input.size()>0?$input.val():$1; //如果得到的元素数量大于0则返回该元素的值,否则返回$1本身。我猜测整个功能是,找到一个占位符比如{input},然后在$parent中查找有没有这个元素,如果有就讲该占位符替换为该元素的值,如果没有,则说明他不是一个占位符,就不替换。
    比如:var test = "中国队{id}:{id2}日本队";假设有一个元素的id叫id,另一个叫id2。他们的值分别为2,0
    那么上面的就替换成中国2:0日本队。
      

  3.   

    看了CJ的分解,明白了许多,楼主用了Jquery、
    另外这行代码:var $parent=_box||$(document);应该是限制了查找input标签的范围的Jquery对象。