2015-04-21 29 views
0

什么是jQuery来串联,以达到最佳的方式 “carid1 | engineid1,carid2 | engineid2”,例如: “244 | 504442 | 882”jQuery的构建CSV字符串变量中串联

$('#tblResults input[id*="ShowRoom"]').each(function(i, item){ 
strValue = $(this).attr("carid") + '|' + $(this).attr("engineid"); 

alert(strValue); 

}).get().join(","); 

下面是HTML

<TABLE width="100%" class="normal" id="tblResults" border="0" cellSpacing="0" cellPadding="0"> 
    <TBODY> 
    <TR class=header> 
    <TH class=sortLPad title="Sort by URN" onclick="reSort('0')" align=left>URN </TH> 

    <TH class=sortLPad title="Sort by ShowRoom" onclick="reSort('5')" align=left>Show Room</TH></TR> 

    <P></P> 

    <TR EventId="504"> 
    <TD id=URN noWrap>23KV9878788</TD> 

    <TD id="ShowRoom" class=lPad><INPUT onfocusin=clearField(this); id="ShowRoom0" onfocusout=resetField(this); onkeypress=validate(this) maxLength=1 value=1 size=1 version="2000120420142859" elementname="ShowRoom" engineid="504" carid="244"></TD> 

    </TR> 

    <TR EventId="403"> 
    <TD id=URN noWrap>889878744</TD> 

    <TD id="ShowRoom" class=lPad><INPUT onfocusin=clearField(this); id="ShowRoom2" onfocusout=resetField(this); onkeypress=validate(this) maxLength=1 value=1 size=1 version="2000120420142859" elementname="ShowRoom" engineid="882" carid="442"></TD> 

    </TR> 

    </TBODY> 
</TABLE> 

回答

0

您当前.each方法返回你迭代每个input元素;因此.get().join(',')将不起作用。而是将值推入一个数组,然后使用join(',')进行连接。

var arr = []; 
$('#tblResults input[id*="ShowRoom"]').each(function(i, item){ 
strValue = $(this).attr("carid") + '|' + $(this).attr("engineid"); 
    arr.push (strValue) 
}); 

console.log (arr.join (',')) // returns 244|504,442|882 
+1

@Regent它不是关于性能。上面的OP发布的代码不能按缩进工作。所以我已经向他展示了如何这样做。顺便说一句:如果性能优先,我甚至不会使用'jQuery' – Praveen

+0

[更简单](http://jsperf.com/jquery-element-each-vs-simple-for/2) – Praveen

+0

@Regent:我是新的到JavaScript和jQuery。 jquery是不是只是用来优化编码?我感到震惊jquery是如此广泛流行的性能问题:( – Gauls