2010-07-14 79 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]; 
});