2010-07-14 45 views
4

嗨我写了一个函数,用于更改表格单元格中的文本,表格显示团队的成员但不是可读的格式,所以我必须将字符串输出转换为可读格式。重构每条语句

这一切都工作正常,但我想知道是否有人可以帮助我重新考虑这个功能,因为它似乎有点粗俗?

jQuery代码:

$(".membersName").each(function() { 

    var memberName = $(this).text(); 
    var splitmemberName = memberName.split("="); 
    var finalNameSplit = splitmemberName[1].split(","); 
    $(this).empty(); 
    $(this).append(finalNameSplit[0]); 


}); 

任何帮助或建议将不胜感激。提前欢呼

回答

3

对我来说很好!您可以使用RegExp来代替,但我不能说这会是更好。尽管这样的:

$(this).empty(); 
$(this).append(finalNameSplit[0]); 

可以缩短到这个:

$(this).empty().append(finalNameSplit[0]); 
+0

辉煌欢呼乔什! – jonnyhitek 2010-07-14 13:20:35

+0

注意:如果需要,您可以在技术上将整个功能组合成一行代码。但是,这会更难以维护。你现在拥有的方式是一个很好的平衡。 – 2010-07-14 13:37:58

0

链接可以帮助你一点的地方,例如:

$(this).empty(); 
$(this).append(finalNameSplit[0]); 

能成为

$(this).empty().append(finalNameSplit[0]); 

另外,请尝试缓存$(this)以提高性能,即

var $this = $(this); 

从技术上讲,你可以合并这些行:

var memberName = $(this).text(); 
var splitmemberName = memberName.split("="); 
var finalNameSplit = splitmemberName[1].split(","); 

像这样:

var finalNameSplit = $(this).text().split("=")[1].split(","); 

这意味着,你可以在一行代码就写:

$(this).empty().append($(this).text().split("=")[1].split(",")[0]); 

尽管您的版本更具可读性。

+0

辉煌的欢呼詹姆斯,绝对是一些思想! – jonnyhitek 2010-07-14 13:25:28

+1

詹姆斯 - 你正在执行一个'。空*(*)*之前*您正在获取文本。因此,将不会有文字可供操作。 :o) – user113716 2010-07-14 13:33:02

1

只有一个:

$(".membersName").html(function(i, old) { 
    var eqpos = old.indexOf("="); 
    return old.substring(eqpos+1, old.indexOf(",", eqpos)); 
});​ 
+0

你可以使用这个答案更多的jQuery,并使用$(this).html()来代替。 – 2010-07-14 13:29:55

2

试试这个:http://jsfiddle.net/C9fMN/

$(".membersName").each(function() { 
    $(this).text(function(i,txt) { 
     return txt.split("=")[1].split(",")[0]; 
    }); 
}); 

无需使用.empty()这种方式,因为你完全替换文本。

事实上,这样一来,你真的甚至不需要调用.each()

http://jsfiddle.net/C9fMN/1/

$('.membersName').text(function(i,txt) { 
    return txt.split("=")[1].split(",")[0]; 
});