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代表的意思不是很理解
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代表的意思不是很理解
http://apps.hi.baidu.com/share/detail/7168280
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日本队。
另外这行代码:var $parent=_box||$(document);应该是限制了查找input标签的范围的Jquery对象。