替代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()
的解决方案没有太大的不同,因为它或多或少地做同样的事情。