看着这个
get value of inside a tag with jQuery.?
<span>
<b>hi_1</b>
<b>hi_2</b>
<b>hi_3</b>
<b>hi_4</b>
<span>
其中的问题是获取标记内容的逗号分隔字符串
解决方案是推动每个解决方案。
是否有更短(可能更快)的方式使用例如
$("span b").text().join(",")
当然不起作用,因为text()不返回数组......
更新:
artyom发布的“错误报告”(功能请求)有这个相当有趣的片段
var x = $("span b").map(function() {
return $(this).text();
}).toArray().join(", ");
类似于BrokenGlass的解决方案,但更短......
http://jsfiddle.net/mplungjan/M42Qx/
我更喜欢toArray one ...
答案 0 :(得分:3)
这可能是作弊,但由于<b>
标记之外没有任何文字,您只需使用$('span').text()
抓取<span>
的内部文字并使用相反......
$.trim($('span').text()) // Trim newlines near <span> and </span> tags
.replace(/\s+/g, ', '); // Replace all other whitespace between <b></b> with ,
答案 1 :(得分:1)
您可以使用map(),但我怀疑这会更快,因为您必须从jQuery对象转换为数组并返回到jQuery对象:
var results = $("b").get()
.map(function(e) { return $(e).text();})
.join(",");
alert(results);
答案 2 :(得分:1)
有一个bug report关于向text()
方法添加此功能的问题,在提供了几种方法后,该方法已使用 worksforme 解决方案关闭。
答案 3 :(得分:0)
我想到的唯一选择是使用filter()
var values = [];
$('b').filter(
function(){
return values.push($(this).text());
});
alert(values);
这与使用each()
的解决方案没有多大区别,因为它或多或少地做同样的事情。