替代jQuery each() – 自学问题

看着这个

使用jQuery获取标记内部的值。

 hi_1 hi_2 hi_3 hi_4  

问题是获取标记内容的逗号分隔字符串

解决方案是推动每个人。

是否有更短(也可能更快)的方式使用例如

$("span b").text().join(",")当然不起作用,因为text()不返回数组…

更新:

artyom发布的“错误报告”(function请求)有这个相当有趣的片段

 var x = $("span b").map(function() { return $(this).text(); }).toArray().join(", "); 

这与BrokenGlass的解决方案类似,但更短……

http://jsfiddle.net/mplungjan/M42Qx/

我更喜欢toArray one …

您可以使用map() ,但我怀疑这会更快,因为您必须从jQuery对象转换为数组并返回到jQuery对象:

 var results = $("b").get() .map(function(e) { return $(e).text();}) .join(","); alert(results); 

jsFiddle链接

这可能是作弊,但由于标签之外没有任何文本,您只需使用$('span').text()来获取的内部文本并使用它来代替…

 $.trim($('span').text()) // Trim newlines near  and  tags .replace(/\s+/g, ', '); // Replace all other whitespace between  with , 

有一个关于将此function添加到text()方法的错误报告 ,该方法在提供了几种方法后通过worksforme解决方案关闭。

我想到的唯一选择是使用filter() ,而不是@BoltClock的替代选择。

 var values = []; $('b').filter( function(){ return values.push($(this).text()); }); alert(values); 

JS小提琴演示 。

这与使用each()的解决方案没有太大的不同,因为它或多或少地做同样的事情。